编写“可读”代码的艺术
写代码的两层含义:
一层是功能性,代码编译得到类文件,交给机器去运行,从而实现各种功能、性能、扩展性等特性;
一层是可读性,这是给人看的,是软件可维护性的重要部分;
代码是给人看的,类才是给电脑看的。
1、命名
tmp仅作为临时存储,只要有业务含义,就不应该使用tmp命名;
循环里的index,不单单使用i,m,n,可以加上业务前缀,尤其是嵌套循环的时候;
命名数量词变量的时候带上单位更清楚;
变量的类型可以放在名字里;
名字不能过长或过短,作用域小的变量命名可以短一些;
缩略词一定是团队统一的,约定俗成的;
整个团队,整个系统使用统一的规范明确大小写、中横线、下横线。
2、格式化
团队内必须保持统一的布局风格;
使用相同的占位符(固定数量的空格)来规范代码的缩进;
将过长的方法进行分组,按照逻辑形成代码段,使用空行或者注释进行分割;
3、注释
不要解释代码本身的事实,更多的记录思想和原因;
好代码>坏代码+好注释;
为代码的瑕疵写详细的注释,因为瑕疵更不容易懂;
为系统、模块、组件增加全局性注释帮助新人迅速开始;
注释包括:做什么、怎么做、为什么;
不管你心里想什么,先写下来,读一读,然后跟着代码的修改不断改进注释;
注释要简洁明确,声明代码的高层次意图,而不是明显的细节;
4、简化循环和逻辑
与其尽量追求最小化代码行数,不如追求最小化人们理解它所需的时间。尤其是在JAVA中的链式写法或者同一行代码调用多个方法都不推荐,应该拆分成多行代码,每行调用一个方法给临时变量赋值,然后下一行再对这个临时变量进行下一个方法继续运算;
尽量缩小变量的作用域,谨慎的使用全局变量;
5、重新组织代码
工程学就是把大问题拆分成小问题,然后再将解决方案进行组合;
积极的发现并抽取独立的、不相关的逻辑形成子方法,一段代码只做一件事;
总结通用逻辑和工具代码,将通用代码与项目代码分离;
按需重构结构、重构接口,简化参数;
让代码更加符合思维顺序;
能够把想法给第三个人说明白再写代码;
不要假想需求,不要过度设计,不要超前设计
删除无用的、过时的、无效的注释和代码;
军队通过这种日常最基本的小事来培养军人的纪律性,而纪律性是任何大规模组织协同作战最重要的因素。
养成习惯,培养自己的代码洁癖。
参考:灰胡子老爷爷