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

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

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

函数10个1

1、每一个变量仅仅用于单一用途

2、每一行代码仅仅表达一件事

3、一个循环仅仅做一件事

4、单一抽象层次原则

5、代码组织得一次仅仅做一件事情

6、函数体内仅仅关注一种变化的原因(动机)

7、函数应该遵守单一职责

8、函数圈复杂度应该小于一十

9、函数第一原则是必需要短小

10、编写函数时必须一心一意、专注、怀有谦虚的心态

编程3个价值观

沟通--珍视与他人沟通的重要性

简单--把多余的复杂性去掉

灵活--保持开放。应对变化

计算程序的圈复杂度

1、从1開始,一直往下通过程序

2、一旦遇到下面keyword,或者其他同类词加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

编程是一种态度,编程是一种技艺,编程是一种习惯

做一名有节操、有底线和程序猿

CleanCode代码整洁之道培训总结(2015-03-14)的更多相关文章

  1. 2015年第11本:代码整洁之道Clean Code

    前一段时间一直在看英文小说,在读到<Before I fall>这本书时,读了40%多实在看不下去了,受不了美国人啰啰嗦嗦的写作风格,还是读IT专业书吧. 从5月9日开始看<代码整洁 ...

  2. <读书笔记> 代码整洁之道

    概述      1.本文档的内容主要来源于书籍<代码整洁之道>作者Robert C.Martin,属于读书笔记. 2.软件质量,不仅依赖于架构和项目管理,而且与代码质量紧密相关,本书提出一 ...

  3. <代码整洁之道>、<java与模式>、<head first设计模式>读书笔记集合

    一.前言                                                                                       几个月前的看书笔记 ...

  4. 免费电子书:C#代码整洁之道

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:<Clean Code(代码整洁之道)>是一本经典的著作,那么对于编写整洁 ...

  5. android开发系列之代码整洁之道

    说起代码整洁之道,想必大家想到更多的是那本经典重构书籍.没错,记得当时自己读那本书的时候,一边结合项目实战,一边结合书中的讲解,确实学到了很多东西,对我自己的编码风格影响极深.随着时间的流逝,书中很多 ...

  6. 读<<代码整洁之道>>的感想

    花去了近一周的时间浏览一下这本书.总体感觉这本书写得不错. 我发现自己以前写的代码时多么的糟糕.有很多改进之处... 同时我也发现写出优秀的代码不易.优秀的代码不仅仅易读,并且易修改,易维护,程序易维 ...

  7. 如何写出如散文般的代码――《代码整洁之道》读书笔记(Ch1-Ch3)

    不知道有多少人像我一样,程序出现问题时添加函数添加变量解决,变量名用a,b,c等"简单"的字母来表示.不知道有多少人像我一样,看完自己的代码,心里暗骂"什么玩意儿!&qu ...

  8. 《代码整洁之道》(Clean Code)- 读书笔记

    一.关于Bob大叔的Clean Code <代码整洁之道>主要讲述了一系列行之有效的整洁代码操作实践.软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派 ...

  9. Programming好文解读系列(—)——代码整洁之道

    注:初入职场,作为一个程序员,要融入项目组的编程风格,渐渐地觉得系统地研究下如何写出整洁而高效的代码还是很有必要的.与在学校时写代码的情况不同,实现某个功能是不难的,需要下功夫的地方在于如何做一些防御 ...

随机推荐

  1. 图片裁剪的js有哪些(整理)

    图片裁剪的js有哪些(整理) 一.总结 一句话总结:如果用了amaze框架就去amaze框架的插件库里面找图片裁剪插件,如果没用,jcrop和cropper都不错. 1.amazeui的插件库中有很多 ...

  2. 1.lombok系列1:初识lombok

    转自:https://www.imooc.com/article/18156 初识lombok 官网:https://projectlombok.org/ 什么是lombok 连官网都懒得废话,只给出 ...

  3. go-web编程之处理xml

    摘抄自astaxie的开源书籍 build-web-application-with-golang 接下来的例子以下面XML描述的信息进行操作. <?xml version="1.0& ...

  4. CTF加密题型解析:RSA算法的CTF解法之一

    RSA介绍 根据加密原理,可以将大部分的加密算法分为两大类:对称加密算法和非对称加密算法.对称加密算法的加密和解密采用的是同一套算法规则.而非对称加密算法加密时用的是公钥(公开给所有人),解密时用的是 ...

  5. 使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?(非常稳定、捕获所有异常、非常适合从头开始,但大公司已经有现成的C++框架、所以不会使用)

    使用 Go 语言开发大型 MMORPG 游戏服务器怎么样?和C Socket服务器比起来有什么优劣?可行性怎么样? 从2013年起,经朋友推荐开始用Golang编写游戏登陆服务器, 配合C++做第三方 ...

  6. leetCode解题报告5道题(十)

    题目一:Valid Number Validate if a given string is numeric. Some examples: "0" => true &quo ...

  7. PDF.Js的使用—javascript中前端显示pdf文件

    PDF.Js的使用—javascript中前端显示pdf文件 写于2018/12/6 起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要 ...

  8. (JavaScript基础向)sort()方法里的排序函数的理解

    比较常见的解释可以看这里:js的sort()方法,这篇博客写得挺好的,一般的应用的理解已经足够了. 但是如果要活用sort()方法里面的参数——也就是排序函数的话,可能就比较难理解了. 然后我就总结出 ...

  9. Jquery+Ajax+Bootstrap Paginator实现分页的拼接

    效果图如下 jsp页面引入bootstrap样式,jquery和bootstrap-paginator.js <link type="text/css" rel=" ...

  10. amazeui学习笔记--css(常用组件1)--小徽章Badge

    amazeui学习笔记--css(常用组件1)--小徽章Badge 一.总结 1.am-badge:添加am-badge来声明小徽章对象 <span class="am-badge a ...