杭州IT培训
美国上市IT培训机构
400-111-8989
1、命名很重要
一个错误的命名会很误导人,不良的命名,对于阅读代码的人来说很纠结。一个良好的命名对自己也有很大的帮助。
我个人命名的变量都比较长,一般是单词的全称,这样代码读起来易懂,有些缩写你根本不知道它代表的单词是什么,除了像id代表identifier,org代表organization这些大家常见的缩写命名。
命名一个方法时候,最好能让大家见名知意,看到名字就能猜出你的功能,而不需要去看方法的注释,甚至是读源码来了解你的功能。
2、注释很重要
写一个方法时可以先把这个方法的功能、算法原理交代一下,以后自己或者是其他人维护你的代码时候可以很方便,对于易出错的部分加注释提醒。
3、用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对象,那么你的代码可以简单的增加几行就能达到了目的,而不需要修改那么多的接口,一边修改一边纠结。
4、少复制、粘贴代码
同样的代码不要粘来粘去,当时写的时候确实是快了,可是以后需要修改的时候可就慢多了。
更可怕的是你要修改多处,结果你只修改了一处,而你自己却以为万事大吉了,说不定哪天就蹦出个bug来。应该把这些公共的代码提取成一个class或者是一个方法。
5、一个方法中不要写太多的代码
一个方法中写好多代码,写的时候确实是很方便,很快,更好的办法是把一个大的方法分解成几个小的方法,然后在主方法中调用其他子方法。
如果把所有的逻辑都写在一个方法中,当需求发生变化的时候,再要修改那就慢多了。
我自己写代码的时候,刚开始写某个功能的时候很慢,有几种实现很纠结到底用那种实现,思考半天,给个变量起个名儿也得半天,有时候还不知道对应的英文单词,好吧,再打开桌面词典,查查单词。
写个方法时也得纠结半天,先想好方法的名字,然后是参数,还有返回值。
一小段逻辑的代码可以提取出一个private方法,然后在一个方法中调用好几个私有的小方法。
这样读代码的人读起来也轻松,日后需求发生变化了,你的这些个小的逻辑代码块儿只要重新组合下,就又能满足新的功能,可以复用。
我自己写一个新功能的时候,第一次写很慢,如果是这个新功能发生了变化,需要修改代码,修改起来非常快,许多代码块儿都是现成的,只需要重新组合一下方法的调用即可。
6、添加设计文档
增加一个新的功能模块时最好有个设计文档,先把方方面面都考虑周全了,设计好了再编码实现。
如果一开始就有个设计文档,能把方方面面都考虑周全,实现起来就容易多了,实现的代码还能优雅些。
为了达到最终的目的,可能中间要走些弯路,如果增加的功能多了,每次实现都走一些弯路,系统最终会变的臃肿不堪。
如果推倒重来,以前的功夫就都白费了,不光是编码,还有测试部门的测试,有时时间也不允许重构,再说了重构还有风险,这其中的代价还是挺大的。