时间:2023/2/13来源:本站原创作者:佚名

本文根据《会说话的代码》一书作者王洪亮的直播进行整理。

敏捷风水师,社区知名技术大牛, 软件开发及敏捷咨询师,精益创业导师,Scrum认证CSP。十余年软件行业从业经验,精通日语和英语。多年来一直致力于软件代码开发方法和技巧的研究,是国内“自表达代码”方面的权威,并著有《会说话的代码》一书。擅长极限编程(XP)、测试驱动开发(TDD)、持续集成(CI)、重构(Refactor)、演进式设计(EvolutionaryDesign)以及降低代码的复杂度(CyclomaticComplexity)。通过重构、重写,将代码量大幅度缩减,并且提高可读性、可扩展性、可变更性,从而大幅度降低开发成本。对测试用例设计、划分等有深入研究,对如何提高测试的稳定性以及测试覆盖率有丰富的经验。他也是北京和天津敏捷软件社区的活跃组织者和分享者。长期担任戴姆勒-奔驰创新实验室的精益创业导师和敏捷教练等。

目录[隐藏目录]

11、命名的重要性

22、基本要领

33、词汇的使用

3.1a.名词

3.2b.动词

3.3c.形容词

3.4d.介词

3.5e.代词

3.6f.情态动词

3.7g.生命周期修饰语

3.8h.其他固定词用法

44、时态的使用

4.1a.原形

4.2b.过去式

4.3c.进行时

4.4d.被动式

55、点的使用

5.1a.点的基本作用

5.2b.FluenAPI

66、同义词

77、反义词

88、时间的命名

99、容器命名

、缩写(直播时未说明部分)

、否定式(直播时未说明部分)

、前缀,后缀(直播时未说明部分)

、Spring的层的命名(Service,Dao,DTO,BO,process/business)

、枚举的命名

、空及空白的表述

、设计模式的命名

、专业术语的命名

、和关键词重复的意思的词汇选取(直播时未说明部分)

、同一对象的不同形式的区分

、通用对象的命名(直播时未说明部分)

、其他注意事项(直播时未说明部分)

、防止词穷(直播时未说明部分)

1、命名的重要性软件开发的命名是团队合作的基础。代码是写给人类阅读的。越容易阅读的代码,越容易维护,越容易接手。结构的设计良好会让代码的调用变得容易阅读。结构设计不仅仅是考虑对象的职责和关系,也要考虑调用时的阅读。

编程语言中有很多约定俗成的习惯,应当遵守。

每个团队应该形成自己的编程习惯,不要各种不同的习惯混杂在一起。

让代码读起来像句子是非常实用的设计实践。

2、基本要领a.采用英文命名。不要有拼音命名,或者其他语言的,比如日语,韩语,法语…比如:orderState,而不是dingDanZhuangTai。

b.有明确的分割识别,比如驼峰命名或者下划线分割。不要用没有分割的命名。

c.常量或者枚举值采用全部大写字母,下划线分割。

d.注意语法错误,例如:例如lengthOfTime表示时间长度,timeLength是语法错误。建议不要出现of,改为

classTimeRange{publicintlength();}则调用为:timeRange.length();可以用点号很好的替代Of。

e.词汇的选择,例如:auth表示认证,而doLogin是词穷的表现。当准备用do,execute,process,run等开头的时候,表示应该选取合适的词汇了。

edit表示编辑,而save表示保存。弄清楚词汇的含义有助于更好地设计流程。

3、词汇的使用a.名词i.一般用于表示物理对象和抽象对象

1.物理对象例如:Book

2.抽象对象例如:State

ii.单数形式

1.单数形式表示单独的对象

iii.复数形式

1.复数形式表示多个对象的结合

2.如果没有复数形式,可以用~List,~Map,~Array等形式表示多个数据。

iv.名词用作方法名,有助于理解

1.比如:TimeRange.days()表示时间范围的天数。Length.max表示 长度(用于校验的注解)

b.动词i.动词作为方法名,例如:configure()

ii.动名词,用作对象定义Movement,Configuration

iii.动词和名词组合表示某个具体动作,但是注意,名词有可能出现在参数中。比如:makeOrder()下订单的调用形式可能是makeOrder(order);读起来比较怪,改为make(order);可能更容易其阅读

iv.第三人称形式,为什么text.matches(regExp)要用第三人称表达?因为读起来符合语法习惯。同样的还有string.equals(another)

c.形容词i.Cloneable

1.采用~able结尾命名的形容词,表示具备某种能力

ii.Configurable

iii.

Transactional

d.介词i.on

1.用于前缀,表示在发生某件事情的时候的动作。例如:onChange,onClick,onKeyDown,onKeyUp

ii.at

1.表示时间

2.表示地点

iii.with

1.表示附加

例如:

publicclassRender{publicvoidwith(Rendererrenderer){}}调用时可能表现为:

picture.render().with(Rederer.BOLD_BRUSH);e.代词i.what

1.用于表示判定条件。比如:swtich(message.what)

ii.this

1.默认关键词

iii.that

1.和this结合表示对比,例如
转载请注明原文网址:http://www.13801256026.com/pgzl/2623.html
------分隔线----------------------------