首页 > 其他分享 >《《代码整洁之道》读书笔记》—— 摘自毛星文

《《代码整洁之道》读书笔记》—— 摘自毛星文

时间:2023-05-11 10:48:26浏览次数:50  
标签:摘自 函数 原则 读书笔记 代码 毛星文 名称 要点 整洁

《代码整洁之道》读书笔记


Part1 让代码比你来时更干净

  • 编写代码的难度,取决于周边代码的阅读难度。想要快速实现需求,想要快速完成任务,想要轻松的写代码,请先让你书写的代码整洁易读。

  • 保持整洁的习惯,发现脏代码就要及时纠正。花时间保持代码代码整洁,这不但有关效率,还有关项目的生存。

  • 程序员遵从不了解混乱风险的产品经理(策划)的意愿,都是不专业的做法。

  • 让代码比你来时更干净:如果每次签入时,代码都比签出时干净,那么代码就不会腐坏。

  • 赶上期限的唯一方法,做得更快的唯一方法,就是在始终尽可能保持代码的整洁。


Part2 整洁代码的命名法则

  • 要点一:要名副其实。一个好的变量、函数或类的名称应该已经答复了所有的大问题。一个好名称可以大概告诉你这个名称所代表的内容,为什么会存在,做了什么事情,应该如何用等。

  • 要点二:要避免误导。我们应该避免留下隐藏代码本意的错误线索,也应该避免使用与本意相悖的词。

  • 要点三:尽量做有意义的区分。尽量避免使用数字系列命名(a1、a2…….aN)和没有意义的区分。

  • 要点四:尽量使用读得出来的名称。如名称读不出来,讨论的时候会不方便且很尴尬。

  • 要点五:尽量使用可搜索的名称。名称长短应与其作用域大小相对应,若变量或常量可能在代码中多处使用,应赋予其以便于搜索的名称。

  • 要点六:取名不要绕弯子。取名要直白,要直截了当,明确就是王道。

  • 要点七:类名尽量用名词。类名尽量用名词或名词短语,最好不要是动词。

  • 要点八:方法名尽量用动词。方法名尽量用动词或动词短语。

  • 要点九:每个概念对应一词,并一以贯之。对于那些会用到你代码的程序员,一以贯之的命名法简直就是天降福音。

  • 要点十:通俗易懂。应尽力写出易于理解的变量名,要把代码写得让别人能一目了然,而不必让人去非常费力地去揣摩其含义。

  • 要点十一:尽情使用解决方案领域专业术语。尽管去用那些计算机科学领域的专业术语、算法名、模式名、数学术语。

  • 要点十二:要添加有意义的语境。需要用有良好命名的类,函数或名称空间来放置名称,给读者提供语境。若没能提供放置的地方,还可以给名称添加前缀。


Part3 整洁代码的函数书写准则

  • 第一原则:短小。若没有特殊情况,最好将单个函数控制在十行以内。

  • 第二原则:单一职责。函数应该只做一件事情。只做一件事,做好这件事。

  • 第三原则:命名合适且具描述性。长而具有描述性的名称,比短而令人费解的名称好。当然,如果短的名称已经足够说明问题,还是越短越好。

  • 第四原则:参数尽可能少。最理想的函数参数形态是零参数,其次是单参数,再次是双参数,应尽量避免三参数及以上参数的函数,有足够的理由才能用三个以上参数。

  • 第五原则:尽力避免重复。重复的代码会导致模块的臃肿,整个模块的可读性可能会随着重复的消除而得到提升。


Part4 整洁代码的格式准则

整洁代码的书写格式,可以遵从如下几个原则:

  • 第一原则:像报纸一样一目了然。优秀的源文件也要像报纸文章一样,名称应当简单并且一目了然,名称本身应该足够告诉我们是否在正确的模块中。源文件最顶部应该给出高层次概念和算法。细节应该往下渐次展开,直至找到源文件中最底层的函数和细节。

  • 第二原则:恰如其分的注释。带有少量注释的整洁而有力的代码,比带有大量注释的零碎而复杂的代码更加优秀。

  • 第三原则:合适的单文件行数。尽可能用几百行以内的单文件来构造出出色的系统,因为短文件通常比长文件更易于理解。

  • 第四原则:合理地利用空白行。在每个命名空间、类、函数之间,都需用空白行隔开。

  • 第五原则:让紧密相关的代码相互靠近。靠近的代码行暗示着他们之间的紧密联系。所以,紧密相关的代码应该相互靠近。

  • 第六原则:基于关联的代码分布。

    • 变量的声明应尽可能靠近其使用位置。

    • 循环中的控制变量应该在循环语句中声明。

    • 短函数中的本地变量应当在函数的顶部声明。

    • 对于某些长函数,变量也可以在某代码块的顶部,或在循环之前声明。

    • 实体变量应当在类的顶部声明。

    • 若某个函数调用了另一个,就应该把它们放到一起,而且调用者应该尽量放到被调用者上面。

    • 概念相关的代码应该放到一起。相关性越强,则彼此之间的距离就该越短。

  • 第七原则:团队遵从同一套代码规范。一个好的团队应当约定与遵从一套代码规范,并且每个成员都应当采用此风格。

Part5 整洁类的书写准则

  • 原则一:合理地分布类中的代码。 类中代码的分布顺序大致是:

    1. 公有静态常量
    1. 私有静态变量
    1. 公有普通变量
    1. 私有普通变量
    1. 公共函数
    1. 私有函数
  • 原则二:尽可能地保持类的封装。尽可能使函数或变量保持私有,不对外暴露太多细节。

  • 原则三:类应该短小,尽量保持单一权责原则。类或模块应有且只有一条加以修改的理由。

  • 原则四:合理提高类的内聚性。我们希望类的内聚性保持在较高的水平。内聚性高,表示类中方法和变量相互依赖,相互结合成一个逻辑整体。

  • 原则五:有效地隔离修改。类应该依赖于抽象,而不是依赖于具体细节。尽量对设计解耦,做好系统中的元素的相互隔离,做到更加灵活与可复用。

标签:摘自,函数,原则,读书笔记,代码,毛星文,名称,要点,整洁
From: https://www.cnblogs.com/Rover20230226/p/17390342.html

相关文章

  • 读书笔记-人月神话
    读人月神话感触较深的是第一章的焦油坑,焦油坑是作者用来形容大型系统开发的一个概念。史前时代,恐龙、猛犸象、剑齿虎这些大型食肉动物碰到焦油坑也是没有办法挣脱的,而且越用力就越容易被沉入坑底。这种场景就像极了大型系统开发的工作。基本上一个大型的编程系统产品的开发成本会......
  • [李景山php] 20170504深入理解PHP内核[读书笔记]--第一章准备工作和背景知识--2
    第一节:环境搭建编译安装的关键点:配置编译安装环境,build-essential环境。1.1准备编译环境针对于ubuntu16.04下面建设编译安装环境:apt-getinstallbuild-essential1.2编译cd~/php-src./buildconf./configure–help#查看可用参数./configure–disable-all#编......
  • Netty_Redis_Zookeeper高并发实战-读书笔记
    第1章    高并发时代的必备技能1.nettyNetty是JBOSS提供的一个Java开源框架,基于NIO的客户端/服务器编程框架,能够快速开发高并发、高可用、高可靠的网络服务器程序,也能开发高可用、高可靠的客户端程序。NIO是指:非阻塞输入输出(Non-BlockingIO)。优点:API使用简单,开发门槛......
  • 实验二 电子公文传输系统安全 jzk读书笔记
    《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》安全开发生命周期最著名的SDL模型是可信计算安全开发生命周期,受欢迎的SDL模型有微软的SDL、Cigital的软件安全触点模型、OWASPSDL、思科的安全开发生命周期。两个非常流行的软件安全成熟度模型:Cigit......
  • 实验二 电子公文传输系统安全--读书笔记
    实验二电子公文传输系统安全--读书笔记一、《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》安全开发生命周期最著名的SDL模型是可信计算安全开发生命周期,受欢迎的SDL模型有微软的SDL、Cigital的软件安全触点模型、OWASPSDL、思科的安全开发生命......
  • 读书笔记
    《Core.Software.Security.Security.at.the.Source.CN.软件安全.从源头开始》第一章引论软件安全的重要性和相关性软件是我们在现实世界中做任何事情的关键,同时,软件也分布在最关键的系统中,基于此,软件的安全设计是直观重要的。为了证明一个软件安全程序的合理性,必须知晓没有构......
  • 读书笔记
    简介主要讲述了软件安全开发生命周期的相关内容,包括需求分析、设计、编码、测试、发布和维护等各个阶段。内容涵盖了安全威胁的识别、风险评估、安全设计、代码审查、漏洞测试、修复等方面。需求分析在需求分析阶段,需要考虑系统应对哪些威胁,以及如何保证数据的机密性、完整性和......
  • 读书笔记
    程序员修炼之道》这本书是由国外技术大牛编写经由国内学者进行翻译的一本有关程序员各方面素养提升的一本好书,第一次看一本书重要的就是看他的序和前言,这本书的序和前言给了我十分深刻的印象,编程是一种技艺,一种需要用心学习的技艺,作为一位刚刚接触编程不久的我看了这本书,我领悟了......
  • STL源码分析读书笔记
    主要是关于标准库容器的整理空间配置器主要看SGI的实现,有两个空间配置器_malloc_alloc_template<0>__default_alloc_template<...>用户可以选择单独使用第一个分配器,或者一起使用两个分配器。当用户选择使用两个分配器时,编译器会分别将上述两个分配器typedef成malloc_a......
  • 四月读书笔记
    梦断代码这本书让我越发意识到作为软件开发者的不容易。程序员都怀揣着成就一番事业的心,他们信心满满,斗志昂扬,但因为种种私人原因不能够与其他程序员很好的合作,团队精神难以成型。作为乐观主义者,他们不畏惧任何困难,正因如此,才为计算机提供了无尽的可能目标要实际。实际这个词其实......