“好”的代码与“坏”的代码
虽然对于“什么是优秀的代码“难以形成一致意见,但是这么多年的经验,让我对代码“好”与“坏”积累了一些自己的看法。
比如说,“好”的代码应该:
“坏”的代码包括:
优秀的代码是“经济”的代码,投入少、收益大、投资回报高。
优秀的代码是经济、规范、安全的代码。
要做只有你才能做的事情。
要坚持做需要做的事情。
一个好的程序员,要识别并且区分代码块,让它们易于阅读和辨认。程序代码分块时,我们需要注意以下三个点。
保持代码块的单一性,一个代码块只能有一个目标。代码块内所有的内容都是为了一个目标服务的,
不能把无关的内容放在同一个代码块里。同一个代码块里语句的相互联系比与相邻代码块里的语句关系更为紧密;
注意代码块的完整性。代码块是一个完整的信息块。一个代码块要表达一个相对完整的意思,不能一个意思没说完就分块了,就像话说了半句一样;
代码块数量要适当。代码块过多,会让人觉得路径太长,逻辑复杂,不容易阅读理解。一个基础的代码块最好不要超过 25 行(通常显示屏小半个页面),否则就会有增加阅读理解的困难。
对问题领域进行合理抽象,然后设计响应的对象与类层次结构来表达该抽象。
抽象是关于一些事物的简单描述,不需要对编程实现有任何了解即可理解。
它强调事务的特性和职责,而忽略那些对理解其本质不是很重要的细节。
你往往会发现复杂问题表现出的抽象的层次结构或者说分层。(Henning,2009)
Grady Booch认为任何复杂系统都有两种层次化视角:
一般认为软件构建的设计阶段由两个主要活动组成:
(1) 架构设计:描述软件的顶层结构与组织
(2) 详细设计:在一个足够详细的层面描述设计中单独的组件,组件可以利用此描述信息来实现。
API设计 包括开发顶层架构和详细的类层次结构。
作为一般性方法,我们建议首先定义对象层次结构来描述系统的顶层概念性结构(或者说架构),然后完善类的层次结构,其中类的层次结构详细说明了具体的、客户可以使用的C++类。后面定义API中类的过程也包括考虑单个函数以及它们提供的参数等事项。