代码整洁之道

本文探讨了代码整洁之道,强调了有意义的命名、短小的函数以及整洁的类设计。良好的命名应当清晰传达代码意图,避免使用模糊或误导性的词语。函数应保持短小且单一职责,避免过多嵌套和参数。类的设计应遵循高内聚、低耦合原则,保持短小并封装单一责任。通过这些方法,可以提高代码可读性和维护性,降低系统复杂性。
摘要由CSDN通过智能技术生成

最近读了代码整洁之道这本书,还是挺有感触的。。。

有意义的命名

  • 命名的时候应该已经答复了所有的大问题,正确的命名应该让看代码的人知道,为什么存在,做什么事情,应该怎么用。
  • 好的命名是不需要注释来进行补充的。 写代码的人应该避免留下掩藏代码本意的错误的信息,不应该使用和本意相违背的词语。
    在同一作用范围内命名的时候要做出有意义的区分,不可进行随意的区分。
  • 要使用读得出来的词语进行命名,否则在进行解释命名的时候就会显得异常的愚蠢。
  • 要使用可搜索到的词语进行命名,名称的长短应该与其作用域的大小相对应。 不要使用自己的固定思维去进行命名,要进行慎重的选择。
  • class 的命名应该是名词或者名词短语,不应该是动词。 方法名应该是动词或者动词短语。 别用你自己所认为的幽默来进行命名,懂得你幽默的人其实并不多。
    同一个团队中要约定好每个概念对应的是哪个词,这样就不会产生歧义,不会造成代码的混乱。
  • 命名的时候要避免将同一个单词用于不同的目的,这样的双关语容易造成语义不对,要找到能够区分的词语重新命名。
  • 可以使用计算机科学术语、算法名、模式名、数学术语进行命名,只有程序员才会看你的代码,所以他们是能够读懂的。
  • 要添加有意义的语境来进行命名,这样比单独的一个单词更有说服力,在某些特定的情境下,合适的前缀可以让读者明白这是结构中的哪一个部分。
  • 别害怕重新命名的工作,名称变得更好之后,代码也就向着整洁代码更近一步。

函数

  • 函数应该是短小的,函数不应该大到足以容纳嵌套结构,函数的缩进层级不应该多于一层或者两层,这样的函数才是利于阅读和理解的。
  • 函数只应该做一件事,把一件事做好,而且只由这个函数来做这一件事。
  • 函数中不要混杂不同的抽象层级,不同的抽象层级步骤应该封装在不同的函数里面,每个函数的后面都应该跟着位于下一抽象层级的函数。
  • 利用多态来代替 switch 语句。
  • 要使用描述性的名称来给函数命名,别害怕长名称,长而具有描述性的名称,要比短而令人费解的名称好。
    函数最理想的状态是没有参数,然后是一和二,应尽量避免超过三个参数,除非有足够特殊的理由。
  • 应该避免将参数作为输出,这样会造成阅读上的困惑,还会导致函数的副作用,函数的副作用就是函数会偷偷的做了预料之外的事情。
    函数应该修改某对象的状态或者返回该对象的有关信息,两者都干的时候会导致混乱。
  • 使用异常代替返回错误码,错误处理本身就是一件事,而函数只应该做好一件事情,若 try 出现在函数中,它就应该是函数中的第一个单词。
  • 不要重复自己的代码。
  • 函数中只该有一个 return 语句,循环中不能有 break 和 continue 语句,不能有任何的 goto 语句。
  • 一开始写不出最佳的函数很正常,重要的是好的代码需要不断的打磨,分解函数、修改名称、消除重复,第一遍就能写出最佳代码的人大概是不存在的。
  • 好的程序员是把系统当做故事来讲的,而不是当做程序来写;当你编写的函数可以干净利落的拼装到一起,形成了一种精确而清晰的语言的时候,它就可以帮助你更好的讲诉你的故事了。

  • 类应该从一组变量列表开始,如果有公共静态常量,应该先出现,然后是私有静态变量,以及私有实体变量,很少会有公共变量;公共函数应该跟在变量列表的后面,把某个公共函数调用的私有工具函数紧随在改公共函数后面。
  • 类应该是短小的,系统应该由许多短小的类而不是少量巨大的类组成,每个小类封装一个权责,只有一个修改的原因,并与少数其他类一起协同达成期望的系统行为。
  • 类应该只有少量实体变量,类中的每个方法都应该操作一个或者多个这种变量,方法操作的变量越多,就越黏聚到类上。
  • 将大函数拆分为许多小函数,往往也是将类拆分为多个小类的时机,程序会更加的有组织,也会拥有更加透明的结构。
  • 整洁的类,可以让修改的代码的人更容易的看懂结构,在修改的时候也不会顾虑太多,某种意义上也是节约了在修改上时间的成本。
    部件之间的解耦代表着系统中的元素互相隔离的很好,隔离也让系统每个元素的理解变得更加容易。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值