代码大全 code complete 阅读笔记-1 第十一章 变量名的力量

代码大全 code complete 阅读笔记

感谢肖胜学长,将此书赠送给我,并提议每周总结一下学习心得。这对我来说也是一次改变,更是挑战,在之前总是下决心写阅读笔记,但最后往往不能坚持到底,这次我一定要将这件事做好。

Contents at a Glance

初步浏览了目录,这本书并不是软件源代码大全的意思,引用本书前序中的话来讲,code complete 是“编码完成”的意思,是一个软件项目开发过程中的重要里程碑(milestone)。软件项目进行到这里,表明已经完成了所有的编码工作,即将开始系统测试。这本书讲的正式为了到达“编码完成”这一重要里程碑所必须的软件构建技术,确切地说,就是如何编写高质量的代码。

两件重要的事

1.如何写出高质量的代码

事实上我比较认同作者的观点:那就是应该首先为人编写代码,其次才是为机器,代码主要是供人阅读的。

2.如何成为一个优秀的程序员

目前还在看一本书《黑客与画家》,一个优秀的程序员绝不应该仅仅是代码的堆砌,仅仅以实现需求为目的。优秀的程序员应该像一个艺术家、画家一样,对自己的作品负责,要为它注入灵魂,让它成为有灵魂的作品,这就要求程序员投入自己的感情,真正发自内心的想去做好这件事,甚至达到忘我的境界。


正文开始前的胡侃

下面准备开始写正文啦,毕竟我也是很久没有写东西的习惯了,主要还是因为我太懒了,大学以来就越来越懒。自以为我的自律较差,但是既然决定开始写这个阅读笔记,既是对肖胜学长的承诺,也是对自己的承诺,身为即将工作的大学生,应该不忘初心,不断的学习,更新自己,不要满足现状,才能走的更远。

本书并不需要按照顺序来阅读,于是我直接先选择了目录中我比较感兴趣的一章,那就是变量名的命名规范。(目前markdown还用的不很熟,只会列标题嘻嘻)


第11章 变量名的力量

Considerations in choosing good name

  • 变量名不能随意的取
    因为变量名本质就是代表了变量本身,而狗的名字和狗却是不同的东西。

  • 以问题作为导向(problem orientation
    一个好记的名字反映的通常都是问题,而不是解决方案。
    一个好名字通常表达的是“什么”,而不是“如何”。举个例子:
    表示打印机状态 bitFlag就比printerReady更好
    财务软件里,calcValde也比sum更加的精准

  • 最适当的名字长度
    应该将变量名的长度控制在8到20个字符之间,太短的名字无法传达足够的信息,而太长的名字也会使程序的视觉结构变得模糊不清。
    ——但是,短的变量名也并非总是不好,当你把一个变量名去的很短的时候,比如i,这种变量本身也说明了一件事——该变量代表的是一个临时数据,作用域非常有限。

  • 变量名中的计算值限定词
    类似于 total、sum、average、max、min、record、String这样的限定词,应该将它们放在变量的最后。

  • 变量名应常用对仗词

  1. begin\end
  2. first\last
  3. locked\unlocked
  4. visible\invisible
  5. source\destination
  6. source\target
  • 为特定类型的数据类型命名
    • 状态变量命名
      不要立马只想到flag,不管是什么flag,表达的意义仍然不够清晰,所以我们可以直接用具体的词去描述。如: dataReady、recalcNeeded、reportType这样的具体标记,来取代模糊的xxxFlag。

    • 为布尔变量命名

      1. done
        表示某件事情已经完成
      2. error
        表示发生了错误
      3. found
        表示某个值已经找到
      4. success
        表示某一香操作已经成功。

      还是一样的道理,不要使用模糊不清的状态词。应该明确表态。对于status这样的词名字,你什么也说不出来,为了取得更好的效果,应该吧status替换为类似于error或者statuOK这样的名字,比如sourceFile总是不如sourceFileAvailable、sourceFileFound这样的变量表达的意思更清楚。


要点及补充

Java的标准命名规则不再复述,因为是一开始就约定好的语言风格。
至于说其他的一些细节,还是需要以后慢慢地提升。

Key Point

原文引用

  • 好的变量名是提高程序可读性的一项关键要素 。对特殊种类的变量,比如循环下表和状态变量,需要加以特殊考虑
  • 名字要尽可能地具体。那些太模糊或者太通用以至于能够用于多种目的的名字通常都是不友好的
  • 命名规则应该能够区分局部数据、类数据和全局数据。他们还应该可以区分类型名、具名常量、枚举类型名字和变量名
  • 无论哪种类型的项目,你都应该采用某种变量命名规则。你所采用的规则取决于你的程序规模,以及项目成员人数。
  • 现代编程语言很少用到缩写。如果你真的要使用缩写,请使用项目缩写词典火标准前缀来帮你准确理解缩写。
  • 代码阅读的次数远远多于编写的次数。确保你所取的名字更侧重与阅读方便,而不是便携方便。

你可能感兴趣的:(阅读笔记)