代码整洁之道读书笔记30页PPT
代码坏味道与启发--《代码整洁之道》总结

代码坏味道与启发--《代码整洁之道》总结注释C1.不恰当的注释让不恰当的注释保存到源代码控制系统。
C2.废弃的注释过时、无关或不正确的注释就是废弃的注释不应该保留必须马上删除。
C3.冗余的注释注释应该谈及代码自身没提到的东西,否则就是冗余的。
C4.糟糕的注释值得编写的注释必须正确写出最好的注释,如果不是就不要写。
C5.注释掉的代码注释掉的代码必须删除。
环境E1.需要多步才能实现的构建构建系统应该是单步的小操作。
E2.需要多步才能实现的测试只需要单个指令就可以运行所有单元测试。
函数F1.过多的参数函数参数应该越少越好,坚决避免有3个参数 的函数。
F2.输出参数输出参数违反直接,抵制输出参数。
F3.标识参数布尔值参数令人迷惑,应该消灭掉。
F4.死函数永不被调用函数应该删除掉。
一般性问题G1.一个源文件存在多个语言尽量减少源文件语言的数量和范围。
G2.明显的行为未被实现遵循“最少惊异原则”,函数或者类应该实现其他程序员有理由期待的行为,不要让其他程序员看代码才清楚函数的作用。
G3.不正确的边界行为代码应该有正确的行为,追索每种边界条件并进行全面测试。
G4.忽视安全关注可能引起问题的代码,注重安全与稳定。
G5.重复消除重复代码,使用设计模式。
G6.在错误的抽象层级上的代码抽象类和派生类概念模型必须完整分离,例如:与实现细节有关的代码不应该在基类中出现。
G7.基类依赖于派生类基类应该对派生类一无所知。
G8.信息过多类中的方法,变量越少越好,隐藏所有实现,公开接口越少越好。
G9.死代码找到并删除所有不被调用的代码。
G10.垂直分隔变量和函数的定义应该靠近被调用代码。
G11.前后不一致函数参数变量应该从一而终,保持一致,让代码便于阅读和修改。
G12.混淆视听没用的变量,不被调用的函数,没有信息量的注释应该清理掉。
G13.人为耦合不互相依赖的东西不该耦合。
G14.特性依恋类的方法应该只对自身的方法和变量感兴趣,不应该垂青其他类的方法和变量。
代码整洁之道读书笔记

混乱代码的代价
• 将需求明确到机器可以执行的程度,就是编程要做 的事,这种规约就是代码。
• 糟糕的代码可能毁掉一家公司。 • 混乱代码的代价是驱动生产力不断趋向零。 • 整洁不仅与效率有关,而且关于企业的生存。
什么样的代码是整洁代码?
整洁代码
• 代码逻辑应当直截了当,叫缺陷难以隐藏,尽量减少依赖关系,使之便 于维护,依据某种分层战略完善错误处理代码,性能调至最优,省得引 诱别人做没规矩的优。
函数
三、每个函数一个抽象层级
函数中混杂不同的抽象层级,往往让人迷惑。读者无法判 断哪些是基础概念哪些是细节。
读者无法提纲挈领的代价是,它无法快速学习,快速理解
Demo:testtableHtmlSetupTeardownIncluder.rend er。
随着混乱的增加,团队生产力也持续下降趋向于 零。当生产力下降时,管理层就只有一件事可做 了,增加更多人手到项目中,期望提升生产力。 可是新人并不熟悉系统的设计。他们搞不清楚什 么样的修改符合设计意图,什么样的修改违背设 计意图。而且,他们以及团队中的其他人都背负 着提升生产力的可怕压力。于是,他们制造更多 的混乱,驱动生产力向零那端不断下降。
阅读本书有两种原因 第一,你是个程序员 第二,你想成为更好的程序员
主要内容
• 混乱代码的代价 • 整洁代码艺术、什么是整洁代码 • 如何编写整洁代码
混乱代码的代价
一、要有代码
有人说过我们正在临近代码的终结点。快代码就会自动产生出 规约直接生成程序。
代码呈现了需求的细节。
混乱代码的代价
二、糟糕代码
命名
• 二、命名要避免误导
程序员必须避免留下掩藏代码本意的错误线索。 Demo:accountList 这 个 名 字 就 不 太 好 , 因 为 list 这 词 在 java中是一个类型,如果这个名字表达的类型或者含义不是 list就不应该这样命名。
最新韩顺平java笔记整理幻灯片课件

servlet/jsp开发工具
普通的文本编辑器notepad,uedit32 集成开发工具jcreator,jbuilder,eclipse,editplus,netbean
servlet/jsp运行环境
Tomcat是一个免费的开源的servlet容器,它是Apache基金会的 Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司 及个人共同开发而成。
java.io.OutputStream
javax.servlet.ServletOutput
ng.Throwable
javax.servlet.UnavailableException
ng.Exception javax.servlet.ServletException
servlet中操作数据库
servlet操作数据库注意事项 需要将连接数据库的jar包,拷贝到tomcat服务器 具体有两种方法: 1)将jar包拷贝到tomcat目录下的lib文件夹里 2)在webapps目录的WEB-INF文件下建立一个lib文件夹,然后将 jar包拷贝到该文件夹下
4.因为session的各个属性要占用服务器的内存,因此软件公司都 是在迫不得已的情况下才使用
cookie vs session
1.存在的位置 cookie保存在客户端,session保存在服务器端 2.安全性 比较而言,cookie的安全性比session要弱 3.网络传输量 cookie通过网络在客户端与服务器端传输,而session保存在服务 器端,不需要传输
2.开发servlet(引入Tomcat文件夹下lib文件夹里的servlet-api.jar )
3.部署你的servlet(servlet开发流程)
代码规范培训课程PPT课件

3.5 其他
1、除非必要,不要用数字或较奇怪的字符来定义标识 符。
.
.
18
3.5 其他
2、在同一款软件产品内,应规划好接口部分标识符 (变量、结构、函数及常量)。
3、用正确的反义词组命名具有互斥意义的变量或相反 动作的函数等。
.
.
19
四、代码风格
4.1 TAB和空格 4.2 类型定义和{ } 4.3 函数 4.4 代码块 4.5 代码行
.
.
2
培训目的及意义:
1、讲解代码规范的具体内容。 2、阐述代码规范的重要性。 3、了解代码规范带来的好处。 4、分享代码编写的经验,在未来的软件开发过程中,
尽量避免编写可读性较低的代码,降低代码的逻辑复杂 度。
.
.
3
主要内容:
一、文件排版 二、注释方面 三、命名规则 四、代码风格 五、函数 六、类 七、附录
在代码行的结尾部分不能出现多余的空格。 不要在"::","->","."前后加空格。 不要在",",";"之前加空格。
.
.
21
4.2 类型定义和{ }
类,结构,枚举,联合,大括号另起一行。
.
.
22
4.3 函数
函数体的{需要新起一行,在{之前不能有缩进。 除了特别情况,函数体内不能出现两个空行。 除了特别情况,函数体内不能宏定义指令。 在一个函数体内,逻揖上密切相关的语句之间不加空行,
5.4 函数参数
只读取该参数的内容,不对其内容做修改,用常量引用。 修改参数内容,或需要通过参数返回,用非常量引用。 简单数据类型用传值方式。 复杂数据类型用引用或指针方式。
《架构整洁之道》读书笔记

《架构整洁之道》读书笔记1. 设计与架构软件架构的终极⽬标是,⽤最⼩的⼈⼒成本来满⾜构建和维护该系统的需求。
⼀个软件架构的优劣,可以⽤它满⾜⽤户需求所需要的成本来衡量。
如果该成本很低,且在系统的⽣命周期内始终很低,那么这个系统的设计就是优良的。
反之,就是不好的设计。
胡乱编写代码的⼯作速度,其实⽐循规蹈矩更慢。
要想跑得快,先要跑得稳。
2. 两个价值维度⾏为价值:程序按照需求⽂档要求的⽅式⼯作架构价值:软件的“软”,即软件的灵活性艾森豪威尔矩阵重要且紧急重要不紧急不重要但紧急不重要且不紧急紧急的事情往往没那么重要,⽽重要的事情似乎永远也排不上优先级。
第⼀个价值维度:系统⾏为,是紧急的,但是并不总是特别重要。
第⼆个价值维度:系统架构,是重要的,但是并不总是特别紧急。
应有的排序:重要且紧急重要不紧急不重要但紧急不重要且不紧急常犯的错误:将第三优先级的事情提到第⼀优先级去做。
导致重要的事情被忽略。
平衡系统架构的重要性与功能的紧急程度,是软件研发⼈员⾃⼰的职责。
建议:为好的软件架构⽽持续⽃争研发团队必须从公司长远利益出发,与其他部门抗争,公司内部的抗争本来就是⽆⽌境的。
软件的可维护性需要由你来保护,这是你的职责,公司雇你的很⼤⼀部分原因就是需要有⼈来做这件事。
3. 编程范式编程范式指的是程序的编写模式。
⼀共只有三种编程范式,⽽且未来⼏乎不可能再出现新的(理由是,编程范式都是增加限制,Bob⼤叔的理解)。
⼀本谈软件架构的书,为什么要设计编程范式呢?Bob⼤叔如是说:多态是我们跨越架构边界的⼿段,函数式编程是我们规范和限制数据存放位置与访问权限的⼿段,结构化编程则是各模块的算法实现的基础。
这和软件架构的三⼤关注重点不谋⽽合:功能性、组件独⽴性、数据管理。
结构化编程可推导性:可以⽤代码将⼀些已证明可⽤的结构串联起来,只要证明额外的代码是正确的,就可以推导出整个程序的正确性goto语句的某些⽤法会导致某个模块⽆法被递归拆分成更⼩的、可证明的单元。
代码整洁之道

2.9 类名............. 23 2.10 方法名...... 23 2.11 别扮可爱.................. 23 2.12 每个概念对应一个词............................. 24 2.13 别用双关语........... 24 2.14 使用解决方案领域名称...................... 25
第 1 章 整洁代码…………………………………………………………………………………………………………………………………………………………. 1
1.1 要有代码…………………………………………………………………………………………………………………………………………………………. ……….2 1.2 糟糕的代码……………………………………………………………………………………………………………………………………………………………… 2 1.3 混乱的代价……………………………………………………………………… ……………………………………………………………………………………… 3 1.3.1 华丽新设计…………………………………………………………………………………………………………………………………………………………..4 1.3.2 态度 4 . ………………………………………………………………………………………………………………………………………………………………………. 1.3.3 迷题 5 . ………………………………………………………………………………………………………………………………………………………………………. 1.3.4 整洁代码的艺术. 5 ………………………………………………………………………………………………………………………………………………
代码整洁之道读书笔记PPT课件

混乱代码的代价
• 将需求明确到机器可以执行的程度,就是编程要做 的事,这种规约就是代码。
• 糟糕的代码可能毁掉一家公司。 • 混乱代码的代价是驱动生产力不断趋向零。 • 整洁不仅与效率有关,而且关于企业的生存。
什么样的代码是整洁代码?
8
整洁代码
• 代码逻辑应当直截了当,叫缺陷难以隐藏,尽量减少依赖关系,使之便 于维护,依据某种分层战略完善错误处理代码,性能调至最优,省得引 诱别人做没规矩的优。
天愿愿愿还病 发师下要萧我亲还卧代春头头
敲人意做没中改三敲问去兮在友在听码色敲望
代长敲比敲惊不千代童敲易敲如敲风飘关代明
码久代翼代坐完丈码子代水代相代雨出不码月
码鸟码起
码寒码问码声来住
2
阅读本书有两种原因 第一,你是个程序员 第二,你想成为更好的程序员
3
主要内容
• 混乱代码的代价 • 整洁代码艺术、什么是整洁代码 • 如何编写整洁代码
29
类
二、类应该短小
对于函数,我们通过计算代码行数衡量大小。对于类,我们采用不同的 衡量方式,计算权责。
权责同职责,也同变化的原因。 1、类应该符合单一权责原则 2、类应该内聚 3、保持内聚会得到需要短小的类 关于类的组织这个话题比较大,比较原则性。注意理解不同设计原则之间 的因果依赖关系。
30
Thank You!
15
函数
• 函数的第一条规则是要短小,第二条规则还是要短小。40
年的经验告诉作者,函数就是要短小。 • 20行封顶最佳。 • 每个函数都一目了然,每个函数都做一件事。而且每个函数
都依序把你带到下一个函数,这就是函数应该达到的短小程 度。
16Leabharlann 2019/9/1317函数
《代码整洁之道》总结和笔记

《代码整洁之道》总结和笔记前⾔《代码整洁之道》在业内有很⾼的知名度,被诸多前辈推荐给后来者阅读。
本书以循序渐进改造⼀个⼩程序的⽅式,演⽰了⼀个程序可能的各种设计(在代码层⾯)。
⼿把⼿教你该怎么设计代码,为何要这样设计,这样设计的好处是什么。
通过⼀周的阅读,总结了如下要点。
⼀函数所有的编程都是从HellWorld这个⼩函数开始的,学会设计函数⾮常重要1. 函数要短。
短才⽅便阅读、维护和设计。
(每个⼈都经历过读不懂⾃⼰代码的尴尬)2. 函数只做⼀件事。
依照单⼀职责原则设计函数。
⼀个函数可以:流程控制,逻辑判断,改变变量状态,以及做运算,或者调⽤多个下⼀抽象级的函数。
3. 函数分解成多个抽象层级设计,⾼层函数只调⽤下次层函数,呈树状图,层层封装。
4. 函数不应该有标识参数(除了作为API的函数),这意味着函数有⾄少两种执⾏⽅式,违反了第2条原则。
⽽且明显能拆成多个⼩函数。
5. 函数参数越少越好有,多个参数应该封装成⼀个整体传⼊的。
如果逻辑上不是⼀个整体,则函数肯定能被拆成多个⼩函数然后被分别调⽤。
第4条标识参数可以封装进整体传⼊函数,⽽不是直接作为函数的参数6. 函数真的最好只做⼀件事,不要为了⼀时⽅便顺⼿加⼏⾏代码。
如登录验证时,函数⽤来验证username和password,在验证之后顺便给⽤户初始化些其他东西。
会导致这个函数在其他时候⽆法验证⽤户信息。
7. 底层函数不应该改变参数状态,如果想改变某类的状态,就把该函数加⼊该类,让它⾃⼰调⽤函数。
如:把改变类x的状态的函数调⽤addFooter(x),改为x.addFooter()。
8. 函数不要返回错误码,这需要你有错误码的枚举类,并且违反了开放封闭原则(你需要加⼊新错误码来扩展新错误),直接抛出异常就好了。
(可以通过继承⽗异常来扩展)。
但是实际上错误码的应⽤不⽐异常少,⽽且异常也会导致代码的臃肿。
9. 函数名称应该描述清楚函数作⽤,避免频繁去看⽂档,这对于短⼩的函数来说不难办到,如果很难命名可能需要思考函数是否有依照以上原则设计(你⼀个函数可能做了很多事情)。