动机

最近在回顾自己之前写的代码时,发现之前的惨不忍睹。最大的问题是,几个月前自己写的居然都看不懂。 有些问题自己能避免,例如有意义的变量命名问题,但是由于当时英文卡住了,直接就随便命名了,当时以为自己看得懂,以后就能懂,最后发现是自己想多了。

刚好今天没事翻了一下之前买的书籍《代码整洁之道》,看到下面一段话,引起了我的共鸣,所以我决定,记录一下自己的心得,以形成一套自己整洁的代码风格。

是的,我们就是一群代码猴子,上蹿下跳,自以为领略了编程的真谛。可惜,当我们抓着几个酸桃子,得意洋洋坐到树枝
上,却对自己造成的胡乱熟视无睹。那堆“可以运行”的乱麻程序,就在我们的眼皮底下慢慢腐坏。


什么才是整洁的代码

能通过所有的测试
没有重复代码
体现系统中的全部设计理念
包括尽量少的实体,比如类,方法,函数等

我追求的代码是这样的,它像一篇满分作文一样,不啰嗦但是又极具表现力。所以如何提高代码的表现力,是我接下来学习的事情,我目前离这条路还有很远,加油努力!


变量

变量命名

(1)采用驼峰式命名,第一个字母小写;

(2)变量都是单词的组合,很明显的可以用缩写,例如:addr (地址)

(3)单词都是名词形式

(4)单词不能有歧义,例如 addedNumber (add可以是添加,也可以是插入)


函数

函数命名

(1)同上,但是函数名第一个单词是动词,例如deletePage

(2)能用函数名说清楚的事情,尽量不要用注释,函数名字长一点为所谓,eg.

deletePagaAndAllReferences()

个人感觉,最关键的是取一个好的名字,但是这需要很强的描述技巧和英文表达能力。这个还是要多看源代码,多联系。

函数组织方式

(1)函数要短小,一个函数只负责一件事件

(2)if,else,switch语句后面应该只能是一句话,例如

1
2
3
4
switch(choice){
    case 1: addStudent();
    case 2: deleteStudent();
}

(3)函数参数尽可能少,最理想是没有参数,一个,二个,三个都还可以。超过三个就考虑是否弄一个类了。

函数参数尽量不要使用bool型的变量,如果是这种情况,可以考虑写两个函数,一个是True情况下的,一个是false情况下的。

(4)try/catch错误处理的情况应该单独弄一个函数,而不是要放在主函数里面,这样会弄乱主函数的代码结构。

(5)对于大函数,遵循只有一个return的原则

​ 小函数,可以出现多个return (if里面)

语录: 大师级程序员将系统当做故事来讲,而不是当程序来写。


注释

注释出现的目的:注释是因为代码不能很好的表达我们的意图的时候,采用的一种弥补方式。所以要尽可能的避免注释(不是不用),因为代码而且会变,但是注释不能跟着变,而且不同人表达的可能不同。

(1)注释应该是对意图的解释

(2)注释可以是一些警告

(3)TODO注释

(4)不要出现无意义,多余的注释

(5)不要注释代码,如果不要直接删除,但是要做好版本控制


代码格式

代码格式就像文章的排版,同样非常重要。

(1)用空行分割出不同逻辑的代码

(2)相关函数尽可能放到一块,并且按照调用顺序从上至下,以方便可读性

(3)赋值=左右两边有空格隔开;函数参数之间用空格隔开;同时出现乘法和加法,乘法不用空格隔开,例如:

1
return b*b - 4*a*c;

(4)一行if代码尽量避免,也使用缩进形式