[读书笔记] Clean Code(代码整洁之道)

目录

第一章 整洁代码

第二章 有意义的命名

第三章 函数

第四章 注释

第五章 格式


第一章 整洁代码

第二章 有意义的命名

在编程中,命名随处可见。我们给变量、函数、参数、类和包命名。好的命名能够代码读起来更加容易。

名副其实

一个变量的名字应该体现出这个变量要做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。

int d; //消逝的时间,以日计

int daysSinceCreation
//  选择体现本意的名称能让然更容易理解和修改代码

避免误导

       避免留下掩藏本意的错误线索,避免使用与本意相悖的词。例如hp、aix和sco都不该勇子啊变量名,因为他们都是UNIX平台的专有名称。

       尽量避免使用List结尾。别用accountList来指称一组账号,除非它真的是个List类型。

       提防使用不用之处较小的名称。例如区分:

String XYZControllerForEffientHandlingOfStrings
String XYZControllerForEffientStorageOfStrings 

      区分这两个变量会话费很多时间。假如相似的名称依字母顺序放在一起,且差异很明显,那就会相当的有助益。

做有意义的区分

     命名变量时要做有意义的区分。例如:

getActiveAccount();
getActiveAccouts();
getActiveAccoutInfo();

       函数名称没有有意义的区分,很难做出区分。accountData与account没区别,theMessage与message没区别。要区分名称,就要以读者能鉴别不用之处的方式来区分。

使用读的出来的名称

       人类长于记忆和使用单词。人类进化到大脑中有那么大的一块提防用来处理语言,要利用起来。例如:

bee cee arr three cee enn tee

 

使用可搜索的名称

       单字母名称和数字常量有个问题,就是很难在一大篇文字中找出来。找MAX_CLASS_PER_STUDENAT很容易,但找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式中。

       不要以单字母名称仅用于短方法中的本地变量,名称长短应与其作用域大小想对应。若变量或常量可能在代码中多处使用,则应赋其以便与搜错的名称。

避免使用编码

不要使用类型编码

在强类型语言中,代码编辑环境已经先进到编译开始钱就侦测到类型错误的程度。所以将类型写到变量名中增加了修改变量、函数或类的名称或类型的难度。

不要使用成员前缀

不要使用前缀来标明成员比那两。应当把类和函数做得足够小,消除对成员前缀的需要。读的代码越多,眼中也没有前缀,最后,前缀边做来不入法眼的废料,变做来就代码的标志物。

避免映射思维

     不应当让读者在闹钟把你的名称翻译为他们树枝的名称。这种问题经常出现在选择使用问题领域属于还是解决问题领域术语时。

类名

     类名和对象名应该是名次或名词短语,如Customer、WikiPage、Account和AddressParser。避免使用Manager、Processor、Data、Info这样的类名。

    类名不应当是动词。

方法名

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

重载构造器时,使用描述了参数的静态工厂方法名,例如:

Complex fulcrumPoint = Complex.FromRealNumber(23.0);

小结

      在我看来给类、变量、方法名起一个好的名字非常重要,在自己和其他人阅读代码时,又一个好的命名会帮助快速的理解代码,并且减少产生误导。上面使一些命名的一些技巧,在平时命名时可以运用起来。

      在给变量命名时,一定要体现这个变量的它职责,它是用来存放数据呢,还是某个状态;变量的名字一定要是某个单词或单词的组合,一定不要有歧义。

       命名和对象命名时应该是名词或名词短语,并且要具体一些,不要使用Data、Manager这样的命名,因为这些单词都不具体,别人看来之后不知道具体指什么。

       给方法命名时一定是动词加名词的组合,最好还能够结合参数来命名,这个别人读起来如同一句话。

第三章 函数

        函数是编程世界中不可少的部分,从刚开始学编程写的“Hello World”程序就开始使用函数了,但是我们是否有思考过什么样的函数才是一个好的函数?

短小的函数体

       一个函数应该有几行代码呢?这个问题并没有唯一的答案。Clean Code中提到一行代码应该只有两行、三行或四行。我觉得一个函数应该在10行左右。通常这样的函数都会一幕了然,并且每个函数只做一件事。在阅读代码时,函数会依次把你带到下一个函数。这就是函数应该达到的短小的程度

       代码块和缩进

       在if语句、else语句、while语句的代码应该将他们封装为一个函数,这样在能够保证函数短小,并且封装好的函数在名字上也更容理解这段代码的功能,增加了文档上的价值。

      小的函数体意味着不应该有着很多层的嵌套结构。所以,函数的缩进层级不该多于一层或者两层。这样的函数是易于阅读和理解。

只做一件事

     函数应该只做一件事,并且做好这件事。判断一个函数是否不止做了一件事,又一个方法,就是看是否能够再拆出一个函数,该函数不仅只是单纯地重新诠释其实现。

      将代码抽象成函数是为了方便代码阅读,可以过滤掉不不要的信息。可能一个函数中有需要步骤,从准备数据到计算数据可能会有多个步骤,如果我们将这些小步骤的代码封装到一个函数中,然后使用一个高抽象层的函数来调用这些小步函数,则函数还是只做来一件事。

每个函数一个抽象层级

        要确保函数只做一件事,函数中的语句都要在同一抽象层级上。代码写的越具体,抽象层级却低,如果一个函数中的代码都是调用其他封装好的函数,那么这个函数抽象层级很高。

       函数中混杂不同抽象层级,往往让人迷惑。读者可能无法判断某个表达式是基础概念还是细节。

自顶向下读代码:向下规则

      让代码拥有自顶向下的阅读顺序。想要让每个函数后面都跟着位于下一抽象层级的函数,这样依赖,在查看函数列表时,就能按照抽象层级向下阅读了。

       我们想要这样读程序:程序就像是一系列TO起头的段落,每一段都描述当前的抽象层级,并且位于一下抽象层级的后续TO起头段落。

switch语句

 

第四章 注释

第五章 格式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了小程序应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值