什么是整洁代码?
整洁的代码应该是代码逻辑清晰,直接了当,尽量减少依赖关系,使之便于维护,根据某种分层战略完善错误处理代码。每个类、每个函数和每个模块应该具有隔离性,专注做自己的功能,不被其他地方影响也不影响其他地方。我们日常编程中,每个if-else下面的逻辑应该独立抽取,从而使代码逻辑清晰,代码应该块化,一小块一小块,封装为一个一个的方法体,尽量减少代码冗余。(我一直是这么做的,哈哈)
有意义的命名
1、名副其实
无非就是见名之意,但实际情况中我觉得想要清晰表达意思不是那么容易,清晰表达这是一个用户列表很容易,就用userList,但是还有很多其他的,想要清晰表达就会是变量名过长,有些程序员也不认识那么多单词,所以我觉得命名还是要根据系统中的需要,有时候简化单词写法,适当加上注释
2、避免误导
这个我想大部分程序员都受过这种伤害,0和O难以分辨,表示long类型的 l 和1更是难以分辨,写代码我们应该避免这种写法
3、做有意义的区分
就像是a1和a2一样,这种区分是没有任何意义,每次我看到这种代码也会嗤之以鼻。区分变量,表名都应该能让人鉴别出不同之处
4、使用读的出来的名称
自已造的词语自己都读不出来,比如说DtaRecd01,这种看起来就特别low
5、使用可搜索的名称
如果变量和常量可能在代码中多处使用,就应该提取出来,进行常量命名,一是便于搜索,二是便于维护
6、避免思维映射
简单来说就是写一串数字,自己一看就是自己的生日,别人一看可能能映射成是他女朋友的生日,这点要避免,自己的映射和读者的映射应该尽可能的匹配
7、方法名
方法名应当是动词或动词短语,比如getUser、updateUser,这种表名方法是做什么的,重载构造器时,使用描述了参数的静态工厂方法名。列如
Complex fulcrmPoint = Complex.FromRealNumber(23.0);
通常好于
Complex fulcrmPoint = new Complex(23.0);
8、别扮可爱(别搞非主流)
不要用一些俗话,网络流行语来命名
9、别用双关语
应该用insert的地方,为了保持一致,而用add,这就是双关语了。
10、使用解决方案领域名称
只有程序员才会读我们的代码,所以我们可以尽管用计算机科学的术语,算法 名
11、使用源自所涉问题领域的名称
优秀的程序员和设计师,工作之一就是分离解决方案领域和问题领域的概念,与所涉问题领域更为贴近的代码,应当采用源自问题领域的名称
12、添加有意义的语境
很少有名称是能自我说明的。所以我们需要用有良好命名的类、函数或名称空间来放置名称,给读者提供语境
函数
1、短小
这就是代码块化,方法体内代码一般维持在20行最佳
2、代码块和缩进
if语句、else语句、while语句、其中的代码应该只有一行,就是一个函数调用语句,这样不但能保持函数短小,而且可以使代码逻辑清晰可见
3、只做一件事
函数应该只做一件事,这样有助于拆分,修改,并且会具有隔离性,不受外部其他条件改动的影响
4、每个函数一个抽象层级
要确保函数只做一件事,函数中的语句都要在同一抽象层级上,自顶向下读代码,向下规则,我们想要代码拥有自顶向下的阅读顺序,我们想要让每个函数后面都跟着位于下一抽象层级的函数,这样一来,在查看函数列表时,就能循抽象级向下阅读了
5、switch语句
switch语句会很长,当出现新的条件时会变的更长,switch语句应该只出现一次,用于创建多态对象,而且隐藏在某个继承关系中,在系统其它部分看不到
6、使用描述性的名称
比如isTestTable,选择描述性的名称能理清关于模块的思路
7、函数参数
应尽量避免三个参数及以上,有足够特殊的理由才能用三个以上参数
8、一元函数的普遍形式
向函数传入单个参数有两种及普遍的理由,可能是操作该参数,将其转换为其他什么东西在输出之
9、标识参数
标识参数丑陋不堪,向函数传入布尔值简直是骇人听闻的做法,这样做,方法签名立刻变得复杂起来,大声宣布本函数不止做一件事
10、二元函数
有两个参数的函数比一元函数难懂
11、三元函数
有三个参数的函数要比二元函数难懂的多,排序、琢磨、忽略的问题都会加倍体现
12、参数对象
如果函数看来需要两个、三个或以上参数,就说明其中一些参数应该封装为类了
13、动词与关键字
给函数取个好名字,能较好的解释函数的意图,以及参数的顺序和意图。比如writeField(name),它告诉我们,name是一个field
14、无副作用
函数应该只做一件事,如果做了其他的,这就是副作用
15、输出参数
应该避免使用输出参数,如果函数必须要修改某种状态,就修改所属对象的状态
16、分隔指令与询问
函数要么做什么事,要么回答什么事,但二者不可兼得,应该把指令与询问分隔开来
17、使用异常替代返回错误码
从指令式函数返回错误码轻微违反了指令与询问分离的规则。它鼓励了在if语句判断中把指令当做表达式用,这会导致更深层次的嵌套结构
18、抽离Try/Catch代码块
Try/Catch代码块丑陋不堪,他们扰乱了代码结构,把错误处理与正常流程混为一谈。最好把try和catch代码块的主体部分抽离出来,另外形成函数,函数应该只做一件事,错误处理就是一件事。因此,处理错误的函数不该做其他事,这意味着如果关键字try在某个函数中存在,它就该是这个函数的第一个单词,而且catch/finally代码块后面也不该有其他内容
19、别重复自己
重复是软件中一切邪恶的根源,软件开发领域的所有创新都是在不断尝试从源代码中消灭重复
小结:
代码整洁应该是我们每个程序员都追求的,要证明自己不是一个码奴,是个艺术家。第一次写博客,还没写完,希望给没时间看书又想提升自己的人一点帮助