CleanCode代码整洁之道培训总结(2015-03-14)

        为期四天的CleanCode培训时间很短,很难准确掌握一些知识,但让我对代码有了一个重新的认识和启发;之前也有看过设计模式、重构之类的书,看完之后也有一些感触,过后在写代码中还是不能应用进来,其实重构是时刻都可以进行和长期存在的,变量用途是否单一、一个函数的命名、一个if语句表达式、是否有重复代码、函数职责是否单一、函数是否短小易懂、抽象层次是否单一;

        原来之前写的代码是这么烂,在修改代码时从来都不会去考虑重新组织代码结构,写好的代码就是在写代码时注意细节如何才能写出好代码呢?这是作为程序员值得思考的问题,代码不是设计完后就不能改变的,应该是在以后需求变化,不断重新设计,更利于以后的扩展

         重构就是在不改变代码外在行为的前提下,对代码做出修改,以改进代码程序的内部结构,提高其可理解性,降低其修改成本;本质上说,重构就是在代码写好之后改进它的设计。

函数10个1
1、每个变量只用于单一用途
2、每一行代码只表达一件事
3、一个循环只做一件事
4、单一抽象层次原则
5、代码组织得一次只做一件事情
6、函数体内只关注一种变化的原因(动机)
7、函数应该遵守单一职责
8、函数圈复杂度应该小于一十
9、函数第一原则是必须要短小
10、编写函数时必须一心一意、专注、怀有谦虚的心态

编程3个价值观
沟通--珍视与他人沟通的重要性
简单--把多余的复杂性去掉
灵活--保持开放,应对变化

计算程序的圈复杂度
1、从1开始,一直往下通过程序
2、一旦遇到以下关键字,或者其它同类词加1(if/for/while/and/or)
3、给case语句中的每一种情况加1
4、三元运算符a?b:c 加1
5、给try catch语句加1

其它类型的复杂度度量方法
1、代码行数
2、函数参数个数
3、调用其它函数、对象、包的数量
4、每行运算符的数量
5、调转语句个数(goto/break/continue/throw)
6、控制结构中的嵌套层数
7、变量个数,函数的变量
8、同一变量的先后引用之间的代码行数(跨度)
9、变量生存的代码行数

驯服深层嵌套方法
1、使用卫语句
2、通过重复检测条件中的某一部分来简化嵌套的if语句
3、用break块简化嵌套的if
4、把嵌套if转化成一组if-then-else语句
5、把嵌套if转换成case语句
6、把深层嵌套的代码抽取出来放在单独子程序

软件质量可以分为内在质量(代码架构设计)与外在质量(软件使用过程稳定性)著名的冰山模型
内部质量管理的四个“现代化”
1、可量化----可度量
2、工具化----可视化、透明,使用工具检测(Java语言可使用sourcemonitor)
3、自动化----
4、优化----持续改善

检查代码是否变坏的相关标准
1、格式标准
2、命名
3、类、函数名长度
4、注释量
5、重复度
6、条件表达式
7、圈复杂度
8、函数参数
9、函数内变量个数

供参考的Clean Code方法
1、一个循环只做一件事情
一般情况下循环次数的数量级不是很大,效率就不会很明显,尽量分开处理,看起来结构清晰
2、do/while的使用需要注意,是否执行是由其后的条件决定
3、关于函数单一出口问题,并不是那么重要;如果能增强可读性,那么就使用return

参考资料下载

http://pan.baidu.com/s/1gdd8YKr

http://www.cnblogs.com/renzhimin/archive/2012/04/09/2439447.html

编程是一种态度,编程是一种技艺,编程是一种习惯
做一名有节操、有底线的程序员

你可能感兴趣的:(设计模式与重构)