《代码大全》学习总结--成为一名精致的开发者

15 篇文章 0 订阅
11 篇文章 2 订阅

作者:小 琛
欢迎转载,请标明出处

未完待续

本篇博文是学习《代码大全》时的总结,主要内容是针对代码风格的。代码风格的正确性是工作中的一个重要基本功,也是经常被忽略的点!

31-32章-关于代码的布局

一个目标:高效!

在读这本书的32-32章节时,笔者唯一的感受就是:大佬往往追求代码的高效性。但这个高效性仅仅有少部分是针对机器而言的,更多是针对开发人员。
编程的工作量只有少部分为了机器能看懂,更多是为了人能看懂。

优秀的代码往往具备以下几点:

  1. 准确表达了代码的逻辑结构
  2. 有很高的可读性。开发人员写出的代码要考虑到后续人员维护,对于良好布局的程序,逻辑线有条不紊,流程清晰。
  3. 经得起修改。

一个最简单的例子,开发人员往往会利用空行来区别逻辑,对于机器而言这没有任何用,但对于开发者和维护者,就是布局技巧的展现。

精致开发人员技巧1–单条语句

  1. 控制语句长度,小于80字符。
  2. 巧用空格。下面例子清晰的看出哪个更好

while(pathname{startPath+position ]c>';)and
((startPath+position)<length(pathname))do

while ( pathname { startPath + position ] c> '; ' ) and
( ( startPath + position ) < length ( pathname )) do

  1. 续行小技巧:令续行明显行为明显化+聪明的断句
    例如:续行的首行用标识符结尾“+、&&…”;续行的次行缩进3格
  2. 尽量每行只声明一个变量+变量的声明尽可能接近首次使用位置

精致开发人员技巧2–子程序

  1. 用空行分隔理清逻辑线。一个函数必然也有它的逻辑线,试着用空行来进行分隔。
  2. 子程序的参数需讲究。大多数情况下,参数间用空格就可以做到高效!但当一个函数的参数多且函数名较为长的时候,可以采取下面的方式。
public bool ReadEmployeeData(
int maxEmployees ,
EmployeeList *employees,EmployeeFile *inputFile,int * employeeCount,
bool *isInputError
)

public void Insertionsort(
sortArray data,
int firstElement,int lastElement
)

精致开发人员技巧3–类的布局

在布局类接口时,一般应将类成员按如下顺序表示:

  1. 说明类及其完整用法的头部注释
  2. 构造函数与析构函数
  3. public子程序
  4. protected子程序
  5. private子程序和数据成员

类实现通常应按以下顺序排布:

  1. 描述类所在文件之内容的头部注释
  2. 类数据
  3. public子程序
  4. protected子程序
  5. private子程序

注意的点:

  1. 尽可能的实现:一个文件一个类,且该文件的名称与类名称相关。若多个类要以注释予以区分
  2. 子程序之间要空行分隔,且子程序的实现顺序和类声明顺序一致

精致开发人员技巧4–有关注释

我将注释比作创造艺术品的最后一笔,添加注释意味着:画龙点睛或画蛇添足

有关注释的内容,书中说的繁杂且细致,个人的总结:

  1. 当该处代码被单独抽出时不易理解作用,可加段注释予以说明
  2. 当有关变量有范围限制,可尾注释添加
  3. 当调用外部类函数,且无法通过函数名看出作用时,添加行注释说明
  4. 当对某文件或类进行注释时(此时注释量一般较大,要注意后续的添加性)

写代码时的自我盘问(引用原文)

  • 一般问题
  1. 你的布局方案能统一地运用吗?
  2. 你的布局方案能让代码易于维护吗?
  3. 你的布局方案是否有利于代码的可读性?
  • 单条语句的布局
  1. 为逻辑表达式、数组下标和子程序参数的可读性而使用空格了吗?
  2. 不完整的语句在行末是以明显有错的方式结束吗?
  3. 后续行按照标准数目缩进了吗?
  4. 每行顶多只有一条语句吗?
  5. 所写的每个语句都没有副作用吗?
  • 注释的布局
  1. 注释与其所注释的代码的缩进量相同吗?
  2. 注释的风格便于维护吗?
  • 子程序的布局
  1. 你对每个子程序参数的格式化方式便于看懂、修改、注释吗?
  2. 采用空行分隔子程序的各部分了吗?
  • 类、文件和程序的布局
  1. 多数类和文件之间是一一对应的关系吗?
  2. 如果文件内有多个类,各类中的子程序按类分组了吗?各类都清楚标识了
    吗?
  3. 文件中的子程序用空行清楚地分开了吗?
  4. 在没有更好的组织形式的场合,所有子程序都按字母顺序排列了吗?

7章-高质量的子程序

创建子程序的理由

过程与函数。必须承认,函数是一个伟大的发明,它打开了一扇门,让编程有了更广的空间。
函数存在的意义(2、3两点较为基础不做解释):

  1. 降低复杂度,让逻辑更加清晰。很多人都会将复用性放到第一位,但当我结合应用再读这本书的时候明白了,函数带给我们编程人员最大的作用就是,让逻辑更加清晰,专人做专事,当顺着思路写逻辑时,不必将某处的细节展开,直接调用函数,续上思路即可
  2. 复用性与可移植性
  3. 子类的继承

高效的子程序名称

描述输出结果及副作用,尽可能的概括功能,让读者一目了然。

子程序参数的设计

使用输入–修改–输出的顺序

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值