什么是好代码-代码整洁之道阅读笔记
根据我所阅读的书《代码整洁之道》里的一句话:
“衡量代码质量的唯一有效标准: WTF/min”
从哲学的角度讲,不得不说这真的很客观!!!
毕业不久的我也没有太多关于好代码的定义。应该说没有明确的定义。但是当我看到一段好的代码与坏的代码,作为初学者的我也能够辨别哪个好,哪个不好。
所以客观角度讲。是有好代码跟坏代码的差别的。下面我就简单记录下这本书中讲的一些要点,一方面给自己加深印象。另一方面打发无聊时间,快速度过没有女票的日子。
如何命名
这个真的很重要, 大的不敢说。作为像我们这种二本三本出来的程序员真的很不注重这一点。身边的朋友大部分都是因为自己的英文不好,而导致命名不出符合语意的命名。这样随着时间的推移,会让代码越来越难理解。当然直接影响就是团队的工作效率急速下降。书中第二章提到关于命名的提到的点大概有:
- 避免使用魔术数字
- 避免误导
- 避免使用无意义的字母(如a、b、i…)
- 使用团队内一致认可的,通用的命名(如:generateXxx生成xxx、searchXxx搜索xxx、doSomethingWithXxx使用xxx做什么操作…)
- 避免使用编码(避免使用变量前缀、后缀)
- 类名应该用名词或者名词短语、避免使用动词
- 方法名应当使用动词或动词短语命名
- 每个抽象概念选一个词,并一以贯之(团队里面的代码中不应该出现表示同一个抽象概念的不同命名,例如同样表示获取这个抽象概念就不应该在代码里面出现同样表达”获取”这个抽象概念的多个命名fetch、retrieve、get、obtain等等)
- 多使用解决方案领域命名(例子待完善)
- 分离解决方案领域跟问题领域的名称命名(遇到与所涉及问题领域更贴近的代码时,应当用问题领域的名称来命名)
函数如何封装
- 封装基本原则-短小(检验函数是否短小的方法: 查看函数是否可以切分为不同的步骤)
- 只做一件事情
- 难点就在如何定义这件事情?难点演化后其实就是一件事情跟、步骤如何划分的问题。
例如,现在有个问题是如何将一只大象放入冰箱?可以抽象出一个函数叫putElephantToRefrigerator()。
具体这个函数内部实现可以将这件事情分为三个步骤:- 打开冰箱openRefrigerator()。
- 推大象进入冰箱pushElephantIntoRefrigerator()。
- 关闭冰箱close()。
对于将大象放入冰箱这件事情而言,putElephantToRefrigerator()就只做了一件事情。只不过分三个步骤完成而已。但是对于openRefrigerator()这个步骤而言,它其实又是一件事情。只不过相对于putElephantToRefrigerator()这件事情它就是这件事情的一个步骤而已。因此事情与步骤只是在抽象层级上不同。函数也是如此
- 难点就在如何定义这件事情?难点演化后其实就是一件事情跟、步骤如何划分的问题。
- 尽量保持每个函数都在最低的抽象层级上(多个层级函数的出现会导致代码让人迷惑)
- 函数内的语句都要在同一抽象层级上。
- 遇到switch语句时,应该考虑用多态(抽象工厂+策略可实现多态)替换switch的相关语句
什么是好代码-代码整洁之道阅读笔记相关推荐
- 3.注释(代码的整洁之道)
3.注释(代码的整洁之道) 目录 注释不能美化糟糕的代码 用代码来阐述 好注释 坏注释 注:代码的整洁之道PDF: https://pan.baidu.com/s/16PLDWPiusGjcUfW_j ...
- 2.函数(代码的整洁之道)
2.函数(代码的整洁之道) 目录 短小 只做一件事 每个函数一个抽象层次 switch语句 使用描述性的名称 函数参数 无副作用 分隔指令与询问 使用异常代替返回的错误码 别重复自己 结构化编程 如何 ...
- 1.有意义的命名(代码的整洁之道)
1.有意义的命名(代码的整洁之道) 目录 名副其实 避免误导 做有意义的区分 使用读的出来的名称 使用可搜索的名称 避免使用编码 避免思维映射 类名 方法名 每个概念对应一个词 别用双关语 使用解决方 ...
- 四月书单--《你一年的8760小时》,《代码的整洁之道》
当你深刻的认识到自己的不足时,就会激发无限的潜能.成为一个优秀的自己.前几天和发小聊天,她告诉我,一年前想通了一件事,只和过去的自己比较.从农村来到北京的她曾经因为别人的辉煌而不自信,但是庆幸她能告诉 ...
- 技术人修炼之道阅读笔记(二)重新定义自己
技术人修炼之道阅读笔记(二)重新定义自己 在工作中有一个非常普遍的现象:有些人根本不知道自己想要什么或者什么都想要,无法取舍,但是人的精力毕竟是有限.那么我们如何来避免浪费自己的青春年华呢? 这就需要 ...
- 开课吧:分享C++代码的整洁之道!
大家好,今天分享的主题是:C++代码整洁之道. 整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考<C++代码整洁之道>和<Google C++编码规范&g ...
- 《Clean Code》代码的整洁之道(一)
<代码整洁之道>:细节之中自有天地,整洁成就卓越代码 概述 软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认.<代 ...
- 不能将紧实的字段 绑定到_代码整洁之道【笔记】
一.整洁代码 A.混乱的代价 1.有些团队在项目初期进展迅速,但有那么一两年的时间却慢去蜗行.对代码的每次修改都影响到其他两三处代码 2.花时间保持代码整洁不但有关效率,还有关生存 3.程序员遵从不了 ...
- 代码整洁之道-读书笔记之整洁的代码
1.整洁代码 阅读本书有两个原因,第一,你是个程序员,第二,你想成为更好的程序员 1.1 要有代码 有人认为随着时代的发展,写代码不再是问题,我们更应该关注建模和需求 这句话后半句没有问题,因为语言在 ...
最新文章
- linux free 命令 显示内存使用情况
- 关于linkedin的network的观察和自己的职业道路的追求
- 「每天一道面试题」如何理解方法的重载与覆盖?
- 从单机应用到微服务,用户认证走几步?
- Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】
- 数据绑定 单个对象和集合绑定差异
- 专升本C语言习题知识点笔记
- matlab filter zf,什么是MATLAB函数过滤器中’zf’的内容
- 什么是RESTful风格的API设计?
- c语言改变图片颜色,用c语言把bmp格式的彩色图片转换成黑白的
- jQuery 事件 - blur() 方法
- 李振杰:中科红旗的生与死
- oracle的rowid和rownum,【oracle rowid与rownum的使用与区别 】
- 什么镜头最适合拍风景_风景用什么镜头好
- 3050ti跑tensoflow-gpu,屡次碰壁,总结原因如下
- 利用python对图像进行傅里叶变换_python用opencv 图像傅里叶变换
- Android中实现按钮自动点击
- 如何搭建智慧连锁店物联网
- EXCEL批量打开超链接
- Latex中如何实现图并列/表并列/以及混合并列排版以及双列变单列