知道函数发生了什么,传入什么,返回什么html
避免留下隐藏代码本意的错误线索java
废话是另一种没有意义的区分程序员
读起来像人话编程
如Customer
、WikiPage
、 AddressParser
,避免使用Manager
、 Processor
、Data
、Info
模糊的类名,也不该当是动词。设计模式
依Javabean标准加get
、set
和is
前缀 如employee.getName()
, .setName("mike");
,.isPosted()
app
Complex fulcrumPoint = Complex.FromRealNumber(23.0)
好于new
的方式,构造器设为private
,强制使用(多种)编程语言
避免将统一律念用于不一样的目的,统一术语用于不一样概念。代码做者尽可能写出让别人易于理解的代码,一目尽览,而没必要让人殚精竭虑研究。正例:add
、append
、insert
。函数
对象是强类型的,编辑环境已经能够解决类型错误工具
应使用某种高亮或者颜色标识出成员的环境布局
I
或者Interface
加实现Imp
后缀好于前者,或者也能够不加
专业程序员善用其能,编写其余人能读懂的代码。
函数的第一规则是短小,第二规则是更短小。每一个函数都只说一件事,每一个函数都一目了然。每一个函数都依序把你带到下一个函数。15行?
if else
while
语句等,其中的代码块应该只有一行,即函数调用语句,以保持函数短小
函数的缩进级不该该多于三层
函数应该只作一件事,作好这件事。只作这一件事。判断函数是否不止作了一件事的方法,看是否能再抽出一个函数。函数中若是存在多个区段,代表函数作的事情不止一件。
每一个函数一个抽像层级。确保函数只作一件事,函数中全部的语句都在一个抽象层级上。函数中混杂不一样抽象层级,每每让人迷惑,更恶劣的是,就像破损的窗户,一旦细节与基础概念混杂,更多的细节就会在函数中纠结起来
让每一个函数后面都跟着位于下一抽象层级的函数,在查看函数列表时,就能依抽象层级向下阅读。
使用描述性的名称:函数越短小,功能越集中,就越便于取个好名字
长而具备描述性的名称,比短而使人费解的名称好。长而具备描述性的名称,要比描述性的长注释好。让函数名称中的多个单词容易阅读,而后使用这些单词给函数取个能说清其功用的名称。别惧怕花时间取名字,尝试不一样的名称,实测阅读效果。选择描述性的名称能理清你关于模块的设计思路,并帮你改进。追索好名称,每每致使对代码的改善重构。命名方式要保持一致。使用与模块名一脉相承的短语、名词和动词给函数命名。使用相似措辞,依序讲出一个故事。
足够特殊理由才能用三个以上参数。从测试角度看,参数更叫人为难。
利用一些机制将其转换为一元函数。(多个参数封装成临时类,不是一个好的解决方式)
如assertEqual
改为assertExpectedEqualsActual
(expected
,actual
)大大减轻记忆参数顺序的负担。
若是函数必需要修改某种状态,就修改所属对象的状态。
函数要么作什么事 要么回答什么事,但两者不可得兼。
函数应该修改某对象的状态,或是返回该对象的有关信息。两样都干常会致使混乱。
从指令式函数返回错误码轻微违反了指令与询问分隔的规则。鼓励了在if语句判断中把指令当作表达式使用。另外一方面,若是使用异常替代返回错误码,错误处理代码就能从主路径径代码中分离出来,获得简化。
Try/Catch代码丑陋不堪。他们搞乱了代码结构,把错误处理与正常流程混为一谈。把try和catch代码块的主体部分抽离出来,另外造成函数。
函数应该只作一件事。错误处理就是一件事。所以,处理错误的函数不该该作其余的事,若是关键字try在某个函数中存在,它就应该是这个函数的第一个单词,并且在catch/fianlly代码块后面也不该该有其余内容。
重复多是软件中一切邪恶的根源。许多原则与实践规则都是为控制与消除重复而建立。如面向对象将代码集中到积累,避免冗余。
写代码和写别的东西很像,在写论文或者文章时,你先想什么就写什么,而后再打磨它。初稿也许粗陋无序,你就斟酌推敲,直至达到你心目中的样子。
我写函数时,一开始都冗长而复杂。有太多缩进和嵌套循环。有过长的参数列表。名称时随意取的,也会有重复的代码。不过我会配上一套单元测试,覆盖每行丑陋的代码。 而后我打磨这些代码,分解函数、修更名称、消除重复。我缩短和从新安置方法。有时我还拆散类。同时保持测试经过。
最后,遵循本章列出的规则,我组装好这些函数。我并不从一开始就按照规则写函数。我想没人作获得。
每一个系统都是使用某种领域特定语言搭建,而这种语言是程序员设计来描述那个系统的。
函数是语言的动词(描述具体作了什么事),类是名词。这并不是是退回到那种认为需求文档中的名词和动词就是系统中类和函数的最初设想的可怕的旧观念。其实,这是个历史悠久的真理。编程艺术是是且一直是一门语言设计的艺术。大师级程序员把系统当作故事来说,而不是当作程序来写。他们试用选定编程语言提供的工具构建一种更为丰富且更具表达力的语言,用来说那个故事。那种领域特定语言的一个部分,就是描述在系统中发生的各类行为的函数层级。在一种狡猾的递归操做中,这些行为适用他们定义的与领域紧密相关的语言讲述本身那个小故事。
本章所讲述的是有关编写良好函数的机制。若是你遵循这些规则,函数就会短小,有个好名字并且被很好低归置。不过永远别忘记,真正的目标在于讲述系统的故事,而你编写的函数必须干净利落地拼装到一块儿,造成一种精确而清晰的语言,帮助你讲故事。
若是代码属于如下情形,代码应归于一组,组之间用空行分隔
1.实现同一功能的 2.执行同类任务的(错误处理等) 3.属性相同的(变量类型等) 4.有相互调用关系的
1.赋值操做符周围加空格 2.参数间逗号后加空格 3.优先级低的运算符与先后项加空格 4.优先级高的运算符与先后项不加空格 5.函数名和参数之间不加空格