作者:小 琛
欢迎转载,请标明出处
未完待续
本篇博文是学习《代码大全》时的总结,主要内容是针对代码风格的。代码风格的正确性是工作中的一个重要基本功,也是经常被忽略的点!
目录
31-32章-关于代码的布局
一个目标:高效!
在读这本书的32-32章节时,笔者唯一的感受就是:大佬往往追求代码的高效性。但这个高效性仅仅有少部分是针对机器而言的,更多是针对开发人员。
编程的工作量只有少部分为了机器能看懂,更多是为了人能看懂。
优秀的代码往往具备以下几点:
- 准确表达了代码的逻辑结构。
- 有很高的可读性。开发人员写出的代码要考虑到后续人员维护,对于良好布局的程序,逻辑线有条不紊,流程清晰。
- 经得起修改。
一个最简单的例子,开发人员往往会利用空行来区别逻辑,对于机器而言这没有任何用,但对于开发者和维护者,就是布局技巧的展现。
精致开发人员技巧1–单条语句
- 控制语句长度,小于80字符。
- 巧用空格。下面例子清晰的看出哪个更好
while(pathname{startPath+position ]c>';)and
((startPath+position)<length(pathname))do
while ( pathname { startPath + position ] c> '; ' ) and
( ( startPath + position ) < length ( pathname )) do
- 续行小技巧:令续行明显行为明显化+聪明的断句
例如:续行的首行用标识符结尾“+、&&…”;续行的次行缩进3格 - 尽量每行只声明一个变量+变量的声明尽可能接近首次使用位置
精致开发人员技巧2–子程序
- 用空行分隔理清逻辑线。一个函数必然也有它的逻辑线,试着用空行来进行分隔。
- 子程序的参数需讲究。大多数情况下,参数间用空格就可以做到高效!但当一个函数的参数多且函数名较为长的时候,可以采取下面的方式。
public bool ReadEmployeeData(
int maxEmployees ,
EmployeeList *employees,EmployeeFile *inputFile,int * employeeCount,
bool *isInputError
)
public void Insertionsort(
sortArray data,
int firstElement,int lastElement
)
精致开发人员技巧3–类的布局
在布局类接口时,一般应将类成员按如下顺序表示:
- 说明类及其完整用法的头部注释
- 构造函数与析构函数
- public子程序
- protected子程序
- private子程序和数据成员
类实现通常应按以下顺序排布:
- 描述类所在文件之内容的头部注释
- 类数据
- public子程序
- protected子程序
- private子程序
注意的点:
- 尽可能的实现:一个文件一个类,且该文件的名称与类名称相关。若多个类要以注释予以区分
- 子程序之间要空行分隔,且子程序的实现顺序和类声明顺序一致
精致开发人员技巧4–有关注释
我将注释比作创造艺术品的最后一笔,添加注释意味着:画龙点睛或画蛇添足
有关注释的内容,书中说的繁杂且细致,个人的总结:
- 当该处代码被单独抽出时不易理解作用,可加段注释予以说明
- 当有关变量有范围限制,可尾注释添加
- 当调用外部类函数,且无法通过函数名看出作用时,添加行注释说明
- 当对某文件或类进行注释时(此时注释量一般较大,要注意后续的添加性)
写代码时的自我盘问(引用原文)
- 一般问题
- 你的布局方案能统一地运用吗?
- 你的布局方案能让代码易于维护吗?
- 你的布局方案是否有利于代码的可读性?
- 单条语句的布局
- 为逻辑表达式、数组下标和子程序参数的可读性而使用空格了吗?
- 不完整的语句在行末是以明显有错的方式结束吗?
- 后续行按照标准数目缩进了吗?
- 每行顶多只有一条语句吗?
- 所写的每个语句都没有副作用吗?
- 注释的布局
- 注释与其所注释的代码的缩进量相同吗?
- 注释的风格便于维护吗?
- 子程序的布局
- 你对每个子程序参数的格式化方式便于看懂、修改、注释吗?
- 采用空行分隔子程序的各部分了吗?
- 类、文件和程序的布局
- 多数类和文件之间是一一对应的关系吗?
- 如果文件内有多个类,各类中的子程序按类分组了吗?各类都清楚标识了
吗? - 文件中的子程序用空行清楚地分开了吗?
- 在没有更好的组织形式的场合,所有子程序都按字母顺序排列了吗?
7章-高质量的子程序
创建子程序的理由
过程与函数。必须承认,函数是一个伟大的发明,它打开了一扇门,让编程有了更广的空间。
函数存在的意义(2、3两点较为基础不做解释):
- 降低复杂度,让逻辑更加清晰。很多人都会将复用性放到第一位,但当我结合应用再读这本书的时候明白了,函数带给我们编程人员最大的作用就是,让逻辑更加清晰,专人做专事,当顺着思路写逻辑时,不必将某处的细节展开,直接调用函数,续上思路即可
- 复用性与可移植性
- 子类的继承
高效的子程序名称
描述输出结果及副作用,尽可能的概括功能,让读者一目了然。
子程序参数的设计
使用输入–修改–输出的顺序