zoukankan      html  css  js  c++  java
  • 代码整洁之道(一)

      这本书作为一个初级的程序员和想进入这个行业的人来讲,很值得一读,本人尚未读完,程序员的写代码素质有待提高...

    阅读进度:

    第一章  整洁代码

    第二章  有意义的命名

    第三章  函数

    第四章  注释

    第五章  格式

    第六章  对象和数据结构

    第七章  错误处理

    第十章  类

     

    序:

    <1>软件质量,不但依赖于架构和项目管理,而且与代码质量紧密相关;

    <2>代码质量与其整洁度成正比。干净的代码,既在质量上可靠,也为后期维护、升级奠定了良好的基础;

    <3>” 小处诚实非小事”,“神在细节之中”;

    <4>“5S”哲学:整理、整顿、清楚、清洁、身美;

     

    第一章       整洁代码

    (1.1)要有代码

           我们永远抛不掉代码,代码呈现了需求的细节,将需求明确到机器可以执行的细节程度,就是编程要做的事情;我们无法抛弃必要的精确性,所以代码永存;

    (1.2)糟糕的代码

           勒布朗法则:稍后等于永不;要及时清理自己的代码,不要让糟糕的代码毁了自己的事业和公司;

    (1.3)混乱的代价

           *拖缓团队的生产力,引发各种矛盾;

           <1.3.4>整洁代码的艺术

                     写整洁代码,需要遵循大量的小技巧,贯彻刻苦习得的“整洁感”。这种代码感就是关键所在;

           <1.3.5>什么是整洁代码

                   Bjarne Stroustrup:

                    

                   Grady Booch:

          

                   Dave Thomas:

          

                  Michael Feather:

           

           Ron Jeffries:

          

      

      

         Ward Cunningham

              

     

    (1.4)思想流派

           要习百家之长,自成一家

    (1.5)我们是作者

           <1.5.1>下次你写代码的时候,记得自己是作者,要为批判你工作的读者写代码;

           <1.5.2>读与写(代码)话费时间的比例超过10:1,写新代码时,我们一直在阅读旧代码;

           <1.5.3>要想干的快,想轻松写代码,先让代码易读吧,即便那会使得编写过程更难;

    (1.6)童子军军规

           把代码写好可不够,要时时保持代码整洁,不要让代码随时间的流逝而腐坏,记得每次签入时,代码要比签出时要干净;

    (1.7)前传与原则

           单一职责原则(SRP):

           开发闭合原则(OCP):

           依赖倒置原则(DIP):

     

     

    第二章       有意义的命名

    (2.1)介绍

           软件中随处可见命名。变量、函数、参数、类、封包、源代码以及源代码所在目录、文件

    (2.2)名副其实

           变量、函数或类的名称应该已经答复了所有的大问题。它告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实;

    (2.3)避免误导

           必须避免留下隐藏代码本意的错误线索,避免使用与本意相悖的词语。提防使用不同之处较小的名称;

    (2.4)做有意义的区分

           如果程序员只是为了满足编译器或者解释器的需要而写代码,就会制造麻烦;

           例如:以数字系列命名(a1,a2,a3..)。

         另外,同一个意思用了不同的名字,废话是另一种没有意义 的区分;

         要区分名称,要有读者能鉴别不同之处的方式来区分;

    (2.5)使用读的出来的名称

           Eg:genymdhms(差) PK generationTimestamp(好)

    (2.6)使用可搜索的名称

           单个字母名称和数字常量有个问题,就是很难在一大篇文字中找出来;

           长名称胜于短名称,搜的到的名称胜于用自造编码写就的名称;

    (2.7)避免使用编码

           <2.7.1>对于匈牙利语标记法(使用见仁见智吧)

                  <2.7.1.1>Windows的C语言时代,编译器不做类型检查,程序员需要匈牙利语标标记法来帮助自己记住类型;

                  <2.7.1.2>现代编程语言具有丰富的类型系统,编译器也强制使用类型,人们趋于使用更小的类、更短的方法,好让每个变量的定义都在自己的视野范围之内;对象是强类型的,代码编辑环境已经先进到在编译开始之前就侦测到类型错误的程度,所以类型编码的形式除纯属多余,也会引起其他弊端;

           <2.7.2>成员前缀

                   也不必用m_前缀标明成员变量。应当把类和函数做的足够小,消除对成员前缀的需要。

           <2.7.3>接口和实现

                   有时会出现采用编码的特殊情形。接口和实现必须选一个进行编码的话,作者宁可选择实现:

                   EG:IShapeFactory(No)  PK  ShapeFactoryImp(Yes)

    (2.8)避免思维映射

           不应当让读者在脑中把你的名称翻译为他们熟知的名称。这种名称经常出现在选择是使用问题领域术语还是解决方案术语。明确才是王道,编写他人可以理解的代码。

     

    (2.9)类名

           类名和对象名应该是名词或者名词短语;

    (2.10)方法名

           方法名应当是动词或者动词短语,属性访问器、修改器和断言应该根据其值命名;

    (2.11)别扮可爱

           名称不要太耍宝

    (2.12)每个概念对应一个词;

           对阅读者而言,一以贯之的命名法简直就是天降福音;

    (2.13)别用双关语

           避免将同一单词用于不同目的,同一术语用于不同概念,基本上就是双关语了;

    (2.14)使用解决方案领域名称

    (2.15)使用源自所涉及领域的名称

    (2.16)添加有意义的语境

           你需要用良好命名的类、函数或名称空间来放置名称,给读者提供语境。如果没这么做,给名称添加前缀就是最后一招了;

    (2.17)不要添加没有用的语境

           只要短名称足够清楚,就要比长名称好。别给名称添加不必要的语境,精确正是命名的要点;

    (2.18)结语

           取好名字,需要的良好的描述技巧和共有的文化背景;

  • 相关阅读:
    CodeForces 156B Suspects(枚举)
    CodeForces 156A Message(暴力)
    CodeForces 157B Trace
    CodeForces 157A Game Outcome
    HDU 3578 Greedy Tino(双塔DP)
    POJ 2609 Ferry Loading(双塔DP)
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
  • 原文地址:https://www.cnblogs.com/BlueGeek/p/2887225.html
Copyright © 2011-2022 走看看