代码整洁之道 简单总结

一、整洁代码


混乱的代价:团队生产力下降,进度延缓,新人熟悉慢
华丽的新设计:新的设计需要赶超旧的设计,以至于完成时自身成为了旧的设计
简单规则:
1.能通过所有测试
2.没有重复代码
3.体现系统的全部设计理念
4.包括尽量少的实体,比如类、方法、函数等


二、有意义的命名


1.名副其实
    变量、函数或类的名称足以答复所有的大问题,让你一看就知道它为什么存在,做什么事,应该怎么用。
2.避免误导
    程序员必须避免留下掩藏本意的错误线索。尽量不要使用专有关键字。
3.做有意义的区分
    当同一范围内两样不同的东西,不能重名,更不要以数字系列命名(a1,a2......aN)
4.使用读的出来的名称
    如果名称读不出来,讨论时侯会像个傻鸟,不要造词。
5.使用可搜索的名称
    名称长短与其作用域大小对应。若变量或常量可能在多处使用,则应赋予其便于搜索的名称。
6.避免思维映射
    单个字母变量名就是个问题。在作用域较小、也没有名称冲突时,循环计数器自然可能被命名为i 、j 、k(千万不要用字母l),不要仅仅有了a、b就要取名为c。明确才是王道。
7.类名和对象名应该是名词或名词短语,避免使用动词。
8.方法名应当是动词或动词短语。
9.每个概念对应一个词
     在一堆代码中有controller,又有manger,还有driver就令人很困惑,对于那些会用到你代码的程序员,一以贯之的命名法简直是天降福音。
10.别用双关语。
11.使用解决方案领域名称。
12.添加有意义的语境,但不要添加没用的语境。


三、函数


函数的规则是短小。
函数的缩进层级不该多于两层。
函数应该只做一件事。
switch语句尽量用于创建多态对象,而且隐藏在某个继承关系中。
函数的名称应使用描述性名称,不要害怕长名称,命名方式要保持一致,使用与模块名一脉相承的短语、名称、动粗给函数命名。
函数的参数最理想是零,其次是一、再次是二、应尽量避免三个及以上,除非你有足够的理由,如果一个函数需要3个以上参数,就说明需要将参数封装成类了,参数尽量不要传入boolean。
使用异常替代错误码,错误代码可以从主路径中分离出来得到简化。
错误处理就是一件事。这意味着弱冠关键字try在某个函数中存在,也因该是这个函数的第一个单词,而且catch/finally后也不该有内容。
避免重复。


四、注释


程序员最烦的事是写注释,其次是别人不写注释。
别给糟糕的代码写注释了,重新写吧, 好的代码就是最好的注释。
代码在动,在变化,然注释不总是随之变动,久而久之注视就变得越来越不准确。
不要使用行尾注释, 除非是不得不需要解释地方。
警示作用,代码为何要这样写,或不可改动。
有时Todo注释用来提醒由于某些原因目前还没做的工作。
不要为了写注释而写注释,有时读注释花费的时间远大于都代码的时间。
git管理代码了,不要注释一堆代码放在那,其他人看到会想,注释不删除一定有原因,时间长了,连作者都不知道为何要注释了。


五、格式


Idea都有格式化功能,可以整理一些。
垂直格式:书写时紧密相关的代码应该相互靠近。
横向格式:最好不大于80个字符。
团队规则。


六:对象与数据结构


数据抽象:对象吧数据隐藏于抽象之后,暴露出操作数据的函数。
数据对象的反对称性:数据结构暴露其数据,没有提供有意义的函数。
得墨忒耳律:
著名的得墨忒耳律认为,模块不应了解他所操作的对象的内部情形。
更准确的说,得墨忒耳律认为,类C的方法f只应该调用以下对象的方法:
*C
*由f创建的对象
*作为参数传递的给f的对象
*由C的实体变量持有的对象
方法不应调用有任何函数返回的对象的方法。换言之,只跟朋友谈话,不与陌生人谈话。
混合结构:一半是对象,一半是数据结构。这种结构拥有执行操作的函数,也有公共变量或公共访问器及改值器。无论出于怎样的初衷,公共访问器及改值器都把私有变量公共开化,诱导外部函数以过程式程序使用数据结构的方式使用这些变量。
此类混杂增加了添加新函数的难度,也增加了添加新数据结构的难度,两面不讨好。应避免创造这种结构。


七、错误处理


使用异常而非返回码
给出异常发生的环境声明
别返回null值
别传递null值
如果将错误处理隔离看待,独立于主要逻辑之外,就能写出强固而整洁的代码。做到这一步,我们就能单独处理它,也极大的提升了代码的可维护性。


八、边界


使用第三方代码:尽量对其包装,定义自己的方法,底层对其调用,这样可以做到灵活替换。


九、单元测试


测试的代码也很重要,也需要保持测试整洁。


十、类


1.类的组织
类应该从一组变量列表开始,如果有公共静态常量,应该先出现。然后是私有静态变量,以及私有实体变量。很少有公共变量。
公共函数应跟在变量列表之后。我们喜欢把由某个公共函数调用的私有函数紧随在该公共函数的后面。这符合了自顶向下的原则,让程读取起来就像一篇报纸文章。
2.类应该短小
  (1)单一权责原则
  (2)高内聚
  (3)类与类之间相互隔离

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值