老司机告诉你高质量的Java代码是怎么练成的?
一提起程序员,首先想到的一定是“码农”,对,我们是高产量的优质“码农”,我们拥有超跃常人的逻辑思维以及不走寻常路的分析、判别能力,当然,我们也有良好的编码规范,毕竟是靠代码来养家糊口,最怕半路接到一个项目或是项目增加新功能,发现之前写的注释非常不全,代码也非常的不整洁,有些地方写的‘’窝七八烂的,看着很不舒服。
代码编码规范的都会起到什么作用?
1、好的编码规范,可以减少一个软件的维护成本,并且几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护;
2、好的编码规范可以改善软件的可读性,可以让开发人员尽快而彻底地理解新的代码;
3、好的编码规范可以最大限度的提高团队开发的合作效率;
4、长期的规范性编码还可以让开发人员养成好的编码习惯,甚至锻炼出更加严谨的思维;
高质量的Java代码是怎么练成的?
- 命名
一个错误的命名会很误导人,不良的命名,对于阅读代码的人来说很纠结。一个良好的命名对自己也有很大的帮助。
建议个人命名的变量长一些,一般用单词作为全称,这样代码读起来易懂,有些缩写根本不知道它代表的单词是什么,除了像id代表identifier,org代表organization这些大家常见的缩写命名。
命名一个方法的时候,最好能让大家见名知意,看到名字就能猜出你的功能,而不需要去看方法的注释,甚至是读源码来了解你的功能。
- 注释
写一个方法时可以先把这个方法的功能、算法原理交代一下,以后自己或者是其他人维护你的代码时就可以很方便,对于易出错的部分加注释提醒即可。
l 用class类型
写方法的时候的参数,少用基本类型的组合,而用class类型。
例如:
写一个查找用户的方法queryUser(int age)
最开始的业务需求是根据年龄来查找用户,后来业务规则发生了变化,你可能需要根据年龄和性别来查找用户,于是你又改成了这样queryUser(int age, intsex),假设用0代表男,1代表女(其实更好的实现是用枚举来表示男女);
说不定你哪天的业务又有变化了,需要根据年龄、性别、家庭住址来查询,于是乎你又改成了这样queryUser(int age, int sex, String address)。
如果你当时设计的方法是:queryUser(User user)传入的参数是一个User类呢,那该多好啊,你根本不需要改接口。
在实际项目开发中改一个接口的成本还是挺大的,实际项目开发中为了达到层次清晰、解耦的目的,后台分了好多层,action、business、dao其中dao还有分了dao接口和实现,一个接口修改得牵动多少地方。
而当初设计的接口传递的是User对象,那么你的代码可以简单的增加几行就能达到了目的,而不需要修改那么多的接口,一边修改一边纠结。
- 少复制、粘贴代码
同样的代码不要粘来粘去,当时写的时候确实是快了,可是以后需要修改的时候可就慢多了。
更可怕的是你要修改多处,结果你只修改了一处,而你自己却以为万事大吉了,说不定哪天就蹦出个bug来。应该把这些公共的代码提取成一个class或者是一个方法。
- 一个方法中不要写太多代码
一个方法中写好多代码,写的时候确实是很方便,很快,更好的办法是把一个大的方法分解成几个小的方法,然后在主方法中调用其他子方法。
如果把所有的逻辑都写在一个方法中,当需求发生变化的时候,再要修改那就慢多了。
一小段逻辑的代码可以提取出一个private方法,然后在一个方法中调用好几个私有的小方法。
这样读代码的人读起来也轻松,日后需求发生变化了,你的这些个小的逻辑代码块儿只要重新组合下,就又能满足新的功能,可以复用。
- 增加设计文档
增加一个新的功能模块时最好有个设计文档,先把方方面面都考虑周全了,设计好了再编码实现。
如果一开始就有个设计文档,能把方方面面都考虑周全,实现起来就容易多了,实现的代码还能优雅些。
为了达到最终的目的,可能中间要走些弯路,如果增加的功能多了,每次实现都走一些弯路,系统最终会变的臃肿不堪。
如果推倒重来,以前的功夫就都白费了,不光是编码,还有测试部门的测试,有时时间也不允许重构,再说了重构还有风险,这其中的代价还是挺大的。
所以新增功能一定要把需求搞清除,有个良好的设计文档,考虑周全了再编码实现。
最后在向SVN提交代码时先做个功能测试,然后没问题了,再做个codereview。
努力的人,老司机今天的忠告,你记住了吗?
老司机告诉你高质量的Java代码是怎么练成的?的更多相关文章
- 怎样编写高质量的java代码
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...
- 编写高质量的 Java 代码
代码质量概述 代码质量所涉及的5个方面,编码标准.代码重复.代码覆盖率.依赖项分析.复杂度分析.这5方面很大程序上决定了一份代码的质量高低. 我们分别来看一下这5方面:编码标准:这个想必都很清楚,每个 ...
- 怎样编写高质量的 Java 代码
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友提出宝贵 ...
- HTML Inspector – 帮助你编写高质量的 HTML 代码
HTML Inspector 是一款代码质量检测工具,帮助你编写更优秀的 HTML 代码.HTML Inspector 使用 JavaScript 编写,运行在浏览器中,是最好的 HTML 代码检测工 ...
- iOS应用开发最佳实践系列一:编写高质量的Objective-C代码
本文由海水的味道编译整理,转载请注明译者和出处,请勿用于商业用途! 点标记语法 属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法. 良好的 ...
- 高质量的javascript代码 -- 深入理解Javascript
一. 编写高质量的javascript代码基本要点a) 可维护的代码(Writing Maintainable Code)i. 可读(注释)ii. 一致(看上去是同一个人写的)iii. 已记录b) 最 ...
- 编程精粹--编写高质量C语言代码(3):自己设计并使用断言(二)
接着上一遍文章<<编程精粹--编写高质量C语言代码(2):自己设计并使用断言(一)>>,继续学习怎样自己设计并使用断言,来更加easy,更加不费力地自己主动寻找出程序中的错误. ...
- 编写灵活、稳定、高质量的HTML代码的规范
一.唯一定律 无论有多少人共同参与同一项目,一定要确保每一行代码都像是唯一个人编写的. 二.HTML 2.1 语法 (1)用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现 ...
- 汽车AC键到底是干什么的?老司机告诉你
现在很多人都会开车,想我当初学车的时候一会就可以上手了,开车简单,但是很多细节方面的就是得慢慢学习的过程,比如说汽车的AC键,我相信很多车主,包括老司机都不知道到底有哪些作用,只知道开空调,其实它的用 ...
随机推荐
- javascript之BOM编程Screen(屏幕)对象
这个对象属性相对比较简单.掌握四个方法即可. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...
- Oracle Instance
以前也学习过oracle 逻辑结构的知识,但用的不多好多都是有点概念,最近做到一个跨instance工作流,所有抽点时间温习了一下相关知识,把网上看到的感觉讲的还比较明了,全面的文章汇总一下 inst ...
- 小强的HTML5移动开发之路(12)——从一个多媒体标签说起
来自:http://blog.csdn.net/dawanganban/article/details/18136813 一.视频播放 <html> <head> <ti ...
- Django介绍、安装配置、基本使用、Django用户注册例子
Django介绍 Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站 DjangoMTV的思想 没有controller ...
- UILabel-UITextField-UIBotton UI_…
注意:AppDelegate是类,所以self在这个类中指的就是AppDelegate对象 - (BOOL)application:(UIApplication *)application didFi ...
- 小强的HTML5移动开发之路(5)——制作一个漂亮的视频播放器
来自:http://blog.csdn.net/dawanganban/article/details/17679069 在前面几篇文章中介绍了HTML5的特点和需要掌握的基础知识,下面我们开始真正的 ...
- Linux 中环境变量设置
本文主要整理自以下博文: .bash_profile和.bashrc的什么区别及启动过程 linux环境变量设置方法总结(PATH/LD_LIBRARY_PATH) .bash_profile 和 . ...
- MySQL的一些常用的SQL语句整理
安装MySQL有两种的方式,一种是解压版本,但是需要配置环境变量,相对而言比较麻烦.所以我们一般采取第二种方式,那就是到MySQL的官网上下载安装版.这样就会省去很多麻烦,在这里我就不再详细的介绍具体 ...
- 自定义view入门
如何自定义控件主要分为以下几个步骤: 1.自定义属性的声明与获取 (1)分析需要的自定义属性 (2)在res/values/attrs.xml定义声明,如 <resources> < ...
- mysql进阶(十四) 批量更新与批量更新多条记录的不同值实现方法
mysql 批量更新与批量更新多条记录的不同值实现方法 在mysql中批量更新我们可能使用update,replace into来操作,下面详细介绍mysql批量更新与性能. 批量更新 mysql更新 ...