CleanCode代码规范

Clean Code代码规范

一、有意义的命名

1.一、名副其实

知道函数发生了什么,传入什么,返回什么html

1.二、避免误导

避免留下隐藏代码本意的错误线索java

1.三、作有意义的区分

废话是另一种没有意义的区分程序员

1.四、使用读得出来的名称

读起来像人话编程

1.五、使用可搜索的名称

二、类名

2.一、类名和对象名应该是名词或者名词短语

CustomerWikiPageAddressParser,避免使用ManagerProcessorDataInfo 模糊的类名,也不该当是动词。设计模式

三、方法名

3.一、应该是动词或者动词短语

3.二、属性访问、修改器和断言

依Javabean标准加getsetis前缀 如employee.getName(), .setName("mike");,.isPosted()app

3.三、重载构造器,使用描述了参数的静态工厂方法。

Complex fulcrumPoint = Complex.FromRealNumber(23.0)好于new的方式,构造器设为private,强制使用(多种)编程语言

3.四、别用双关语

避免将统一律念用于不一样的目的,统一术语用于不一样概念。代码做者尽可能写出让别人易于理解的代码,一目尽览,而没必要让人殚精竭虑研究。正例:addappendinsert函数

3.五、使用解决方案领域名称,如设计模式相关命名

3.六、集中精力于把代码写得就像词句篇章(可读性)

四、避免使用编码,避免思惟映射

4.一、 java不须要变量类型编码(匈牙利语标记法)

对象是强类型的,编辑环境已经能够解决类型错误工具

4.二、成员前缀--没必要用m_表示成员前缀

应使用某种高亮或者颜色标识出成员的环境布局

4.三、接口和实现--不建议加接口标示I或者Interface

加实现Imp后缀好于前者,或者也能够不加

4.四、避免思惟映射-变量名称明确是王道!

专业程序员善用其能,编写其余人能读懂的代码。

五、函数

5.一、短小 < 15行

函数的第一规则是短小,第二规则是更短小。每一个函数都只说一件事,每一个函数都一目了然。每一个函数都依序把你带到下一个函数。15行?

5.二、代码块和缩进(不超过三层)

if else while语句等,其中的代码块应该只有一行,即函数调用语句,以保持函数短小

函数的缩进级不该该多于三层

5.三、只作一件事

函数应该只作一件事,作好这件事。只作这一件事。判断函数是否不止作了一件事的方法,看是否能再抽出一个函数。函数中若是存在多个区段,代表函数作的事情不止一件。

5.四、每一个函数一个抽像层级

每一个函数一个抽像层级。确保函数只作一件事,函数中全部的语句都在一个抽象层级上。函数中混杂不一样抽象层级,每每让人迷惑,更恶劣的是,就像破损的窗户,一旦细节与基础概念混杂,更多的细节就会在函数中纠结起来

5.五、自顶向下阅读代码:向下规则

让每一个函数后面都跟着位于下一抽象层级的函数,在查看函数列表时,就能依抽象层级向下阅读。

5.六、确保每一个switch都埋藏在较低的抽象层级,并且永远不重复

5.七、使用描述性的名称

使用描述性的名称:函数越短小,功能越集中,就越便于取个好名字

长而具备描述性的名称,比短而使人费解的名称好。长而具备描述性的名称,要比描述性的长注释好。让函数名称中的多个单词容易阅读,而后使用这些单词给函数取个能说清其功用的名称。别惧怕花时间取名字,尝试不一样的名称,实测阅读效果。选择描述性的名称能理清你关于模块的设计思路,并帮你改进。追索好名称,每每致使对代码的改善重构。命名方式要保持一致。使用与模块名一脉相承的短语、名词和动词给函数命名。使用相似措辞,依序讲出一个故事。

5.八、函数参数,最好没有,尽可能避免三个

足够特殊理由才能用三个以上参数。从测试角度看,参数更叫人为难。

5.九、标识参数 ,这是标识函数不止作一件事情的明确信号,应该拆分。

5.十、二元函数,尽可能改写为一元函数

利用一些机制将其转换为一元函数。(多个参数封装成临时类,不是一个好的解决方式)

5.十一、函数和参数应当造成一种很是良好的动/、名词对形式

assertEqual 改为assertExpectedEqualsActualexpectedactual)大大减轻记忆参数顺序的负担。

5.12避免使用输出参数

若是函数必需要修改某种状态,就修改所属对象的状态。

5.1三、分隔指令与询问

函数要么作什么事 要么回答什么事,但两者不可得兼。

函数应该修改某对象的状态,或是返回该对象的有关信息。两样都干常会致使混乱。

5.1四、使用异常替代返回错误码。

从指令式函数返回错误码轻微违反了指令与询问分隔的规则。鼓励了在if语句判断中把指令当作表达式使用。另外一方面,若是使用异常替代返回错误码,错误处理代码就能从主路径径代码中分离出来,获得简化。

5.1五、抽离Try/Catch代码块。

Try/Catch代码丑陋不堪。他们搞乱了代码结构,把错误处理与正常流程混为一谈。把try和catch代码块的主体部分抽离出来,另外造成函数。

函数应该只作一件事。错误处理就是一件事。所以,处理错误的函数不该该作其余的事,若是关键字try在某个函数中存在,它就应该是这个函数的第一个单词,并且在catch/fianlly代码块后面也不该该有其余内容。

5.1六、别重复本身

重复多是软件中一切邪恶的根源。许多原则与实践规则都是为控制与消除重复而建立。如面向对象将代码集中到积累,避免冗余。

5.1七、如何写出好的函数

写代码和写别的东西很像,在写论文或者文章时,你先想什么就写什么,而后再打磨它。初稿也许粗陋无序,你就斟酌推敲,直至达到你心目中的样子。

我写函数时,一开始都冗长而复杂。有太多缩进和嵌套循环。有过长的参数列表。名称时随意取的,也会有重复的代码。不过我会配上一套单元测试,覆盖每行丑陋的代码。 而后我打磨这些代码,分解函数、修更名称、消除重复。我缩短和从新安置方法。有时我还拆散类。同时保持测试经过。

最后,遵循本章列出的规则,我组装好这些函数。我并不从一开始就按照规则写函数。我想没人作获得。

5.1七、小结

每一个系统都是使用某种领域特定语言搭建,而这种语言是程序员设计来描述那个系统的。

函数是语言的动词(描述具体作了什么事),类是名词。这并不是是退回到那种认为需求文档中的名词和动词就是系统中类和函数的最初设想的可怕的旧观念。其实,这是个历史悠久的真理。编程艺术是是且一直是一门语言设计的艺术。大师级程序员把系统当作故事来说,而不是当作程序来写。他们试用选定编程语言提供的工具构建一种更为丰富且更具表达力的语言,用来说那个故事。那种领域特定语言的一个部分,就是描述在系统中发生的各类行为的函数层级。在一种狡猾的递归操做中,这些行为适用他们定义的与领域紧密相关的语言讲述本身那个小故事。

本章所讲述的是有关编写良好函数的机制。若是你遵循这些规则,函数就会短小,有个好名字并且被很好低归置。不过永远别忘记,真正的目标在于讲述系统的故事,而你编写的函数必须干净利落地拼装到一块儿,造成一种精确而清晰的语言,帮助你讲故事。

六、代码布局

6.一、垂直原则

6.1.1 归组

若是代码属于如下情形,代码应归于一组,组之间用空行分隔

1.实现同一功能的
 2.执行同类任务的(错误处理等)
 3.属性相同的(变量类型等)
 4.有相互调用关系的

6.1.2 单个文件垂直大小不超过500行(<5%)

6.二、水平原则:

6.2.一、单行代码中,要准确的使用空格,

1.赋值操做符周围加空格
 2.参数间逗号后加空格
 3.优先级低的运算符与先后项加空格
 4.优先级高的运算符与先后项不加空格
 5.函数名和参数之间不加空格

6.2.二、代码块中,遇到新的继承结构要缩进

6.2.三、单行代码水平宽度不超过80字符

七、 注释

7.一、写注释前,先仔细考虑是否能够优化代码的描述方式

7.二、 注释和代码是应是同步的

7.三、 注释是意义明确的,不须要自解释

7.四、注释只说明代码为何这样写,而非怎样写

7.五、警告、版权协议、公共API是必需写的注释

http://210.21.236.159/cleanCo...

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息