软件的首要技术使命是管理复杂度,作为软件开发人员,我们不应该试着在同一时间把整个程序都塞进自己的大脑,而应该试着以某种方式去组织程序,以便能够在一个时刻可以专注于一个特定的部分。这么做的目的是尽量减少在任一时间所要考虑的程序量,你需要同时记住的东西越多,就越可能漏掉其中的某一个,从而导致设计或编码的错误。
编写高质量代码需要注意的几个方面:
1、在架构层将系统划分为多个子系统,以便让思绪在某段时间内能专注于系统的一小部分。
2、
仔细定义类接口,从而可以忽略类内部的工作机理。
3、保持类接口的抽象性,从而不必记住不必要的细节。
4、避免全局变量,因为它会大大增加总是需要兼顾的代码比例。
5、避免深层次的继承,因为这样会耗费很大精力。
6、避免深度嵌套的循环或条件判断,因为它们都能用简单的控制结构取代,后者占用较少的脑力资源。
7、别用
goto
语句,因为它们引入了非顺序执行,多数人都不容易弄懂。
8、小心定义错误处理的方法,不要滥用不同的错误处理技术。
9、以系统的观点对待内置的异常机制,后者会成为非线性的控制结构。异常如果不受约束地使用,会和
goto
一样难以理解。
10、不要让类过度膨胀,以至于占据整个程序。
11、子程序应保持短小。
12、使用清楚、不言自明的变量名,从而大脑不必费力记住诸如“
i
代表账号下标,
j
代表顾客下标,还是另有它意?”之类的细节。
13、传递给子程序的参数数目应尽量少。更重要的是,只传递保持子程序接口抽象所必需的参数。
14、用规范和约定来使大脑从记忆不同代码段的随意性、偶然性差异中解脱出来。
15、只要有可能,一般情况下应避免“偶然性困难”。
如果将复杂的逻辑判断代码放入布尔函数,并将其意图概括出来,就可以降低代码的复杂程度。用查表法代替繁琐的逻辑链,也能达到同样目的。如果采用定义良好的一致的类接口,你就无须操心类的实现细节,从而整体上简化自己的工作。
采用编码规范主要也是为了降低复杂度。如果在格式编排、循环、变量命名、建模表示法等方面有统一的考虑,就能将精力集中于更具挑战性的编码问题上。规范最有用之处在于它们能免于你做出任意决定,省却了为之辩解的麻烦。