根据我所阅读的书《代码整洁之道》里的一句话:
“衡量代码质量的唯一有效标准: WTF/min”

从哲学的角度讲,不得不说这真的很客观!!!
毕业不久的我也没有太多关于好代码的定义。应该说没有明确的定义。但是当我看到一段好的代码与坏的代码,作为初学者的我也能够辨别哪个好,哪个不好。
所以客观角度讲。是有好代码跟坏代码的差别的。下面我就简单记录下这本书中讲的一些要点,一方面给自己加深印象。另一方面打发无聊时间,快速度过没有女票的日子。


如何命名

这个真的很重要, 大的不敢说。作为像我们这种二本三本出来的程序员真的很不注重这一点。身边的朋友大部分都是因为自己的英文不好,而导致命名不出符合语意的命名。这样随着时间的推移,会让代码越来越难理解。当然直接影响就是团队的工作效率急速下降。书中第二章提到关于命名的提到的点大概有:

  • 避免使用魔术数字
  • 避免误导
  • 避免使用无意义的字母(如a、b、i…)
  • 使用团队内一致认可的,通用的命名(如:generateXxx生成xxx、searchXxx搜索xxx、doSomethingWithXxx使用xxx做什么操作…)
  • 避免使用编码(避免使用变量前缀、后缀)
  • 类名应该用名词或者名词短语、避免使用动词
  • 方法名应当使用动词或动词短语命名
  • 每个抽象概念选一个词,并一以贯之(团队里面的代码中不应该出现表示同一个抽象概念的不同命名,例如同样表示获取这个抽象概念就不应该在代码里面出现同样表达”获取”这个抽象概念的多个命名fetch、retrieve、get、obtain等等)
  • 多使用解决方案领域命名(例子待完善)
  • 分离解决方案领域跟问题领域的名称命名(遇到与所涉及问题领域更贴近的代码时,应当用问题领域的名称来命名)

函数如何封装

  • 封装基本原则-短小(检验函数是否短小的方法: 查看函数是否可以切分为不同的步骤)
  • 只做一件事情
    • 难点就在如何定义这件事情?难点演化后其实就是一件事情跟、步骤如何划分的问题。
      例如,现在有个问题是如何将一只大象放入冰箱?可以抽象出一个函数叫putElephantToRefrigerator()。
      具体这个函数内部实现可以将这件事情分为三个步骤:

      1. 打开冰箱openRefrigerator()。
      2. 推大象进入冰箱pushElephantIntoRefrigerator()。
      3. 关闭冰箱close()。
        对于将大象放入冰箱这件事情而言,putElephantToRefrigerator()就只做了一件事情。只不过分三个步骤完成而已。但是对于openRefrigerator()这个步骤而言,它其实又是一件事情。只不过相对于putElephantToRefrigerator()这件事情它就是这件事情的一个步骤而已。因此事情步骤只是在抽象层级上不同。函数也是如此
  • 尽量保持每个函数都在最低的抽象层级上(多个层级函数的出现会导致代码让人迷惑)
  • 函数内的语句都要在同一抽象层级上。
  • 遇到switch语句时,应该考虑用多态(抽象工厂+策略可实现多态)替换switch的相关语句

什么是好代码-代码整洁之道阅读笔记相关推荐

  1. 3.注释(代码的整洁之道)

    3.注释(代码的整洁之道) 目录 注释不能美化糟糕的代码 用代码来阐述 好注释 坏注释 注:代码的整洁之道PDF: https://pan.baidu.com/s/16PLDWPiusGjcUfW_j ...

  2. 2.函数(代码的整洁之道)

    2.函数(代码的整洁之道) 目录 短小 只做一件事 每个函数一个抽象层次 switch语句 使用描述性的名称 函数参数 无副作用 分隔指令与询问 使用异常代替返回的错误码 别重复自己 结构化编程 如何 ...

  3. 1.有意义的命名(代码的整洁之道)

    1.有意义的命名(代码的整洁之道) 目录 名副其实 避免误导 做有意义的区分 使用读的出来的名称 使用可搜索的名称 避免使用编码 避免思维映射 类名 方法名 每个概念对应一个词 别用双关语 使用解决方 ...

  4. 四月书单--《你一年的8760小时》,《代码的整洁之道》

    当你深刻的认识到自己的不足时,就会激发无限的潜能.成为一个优秀的自己.前几天和发小聊天,她告诉我,一年前想通了一件事,只和过去的自己比较.从农村来到北京的她曾经因为别人的辉煌而不自信,但是庆幸她能告诉 ...

  5. 技术人修炼之道阅读笔记(二)重新定义自己

    技术人修炼之道阅读笔记(二)重新定义自己 在工作中有一个非常普遍的现象:有些人根本不知道自己想要什么或者什么都想要,无法取舍,但是人的精力毕竟是有限.那么我们如何来避免浪费自己的青春年华呢? 这就需要 ...

  6. 开课吧:分享C++代码的整洁之道!

    大家好,今天分享的主题是:C++代码整洁之道. 整洁的代码在团队中无疑是很受欢迎的,可以高效的被其它成员理解和维护,本文参考<C++代码整洁之道>和<Google C++编码规范&g ...

  7. 《Clean Code》代码的整洁之道(一)

    <代码整洁之道>:细节之中自有天地,整洁成就卓越代码 概述 软件质量,不但依赖于架构及项目管理,而且与代码质量紧密相关.这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认.<代 ...

  8. 不能将紧实的字段 绑定到_代码整洁之道【笔记】

    一.整洁代码 A.混乱的代价 1.有些团队在项目初期进展迅速,但有那么一两年的时间却慢去蜗行.对代码的每次修改都影响到其他两三处代码 2.花时间保持代码整洁不但有关效率,还有关生存 3.程序员遵从不了 ...

  9. 代码整洁之道-读书笔记之整洁的代码

    1.整洁代码 阅读本书有两个原因,第一,你是个程序员,第二,你想成为更好的程序员 1.1 要有代码 有人认为随着时代的发展,写代码不再是问题,我们更应该关注建模和需求 这句话后半句没有问题,因为语言在 ...

最新文章

  1. 防止******ADSL的一些技巧
  2. 推荐3款 Docker 认证的实用免费插件,帮助您快速构建云原生应用程序!
  3. 【控制】《多智能体系统一致性协同演化控制理论与技术》纪良浩老师-第11章-连续时间多智能体系统牵制一致性
  4. java魂斗罗_java 魂斗罗
  5. GDCM:读取和转储DICOMDIR文件的测试程序
  6. 在 Ubuntu 16.04 LTS 上安装 Python 3.6.0
  7. Win10(UEFI启动)安装Ubuntu18.04双系统
  8. 云图说 | 3分钟创建一个游戏类工作负载
  9. dynatrace统计sql执行时间要考虑网络延时
  10. 使用 SignalR与SSE(Sever sent event)向客户端推送提示信息
  11. 日历的java包_java11教程--包java.time.chrono介绍
  12. UI自动化之PO模式
  13. 51单片机外设篇:电机
  14. 手把手教你安装Xposed框架+JustTrustMe抓取手机APP数据
  15. Qt网络编程01-QTcpSocket和QTcpServer的基本使用
  16. 孟岩:参与设计20多个区块链经济系统后,我总结出4个原则和7个陷阱 |区块链捕手
  17. Android开发规范,flutter生成二维码
  18. c语言一段scanf代码,各位谁有c语言中 scanf 语句的源代码 请发邮箱 wsk456@163.com 小弟不胜感激~谢谢~...
  19. 如何升级 Debian 10 (Buster) 到 Debian 11 (Bullseye) ?
  20. uniapp使用l-painter画板,海报

热门文章

  1. DVWA通过攻略之SQL注入
  2. 一个基于Web服务器的PoW区块链案例
  3. 血氧仪语音芯片,超低功耗待机语音IC方案,可自己烧写语音WT588F
  4. 钛资本研究院:5G时代,SD-WAN将何去何从?
  5. Assert.assertNotNull()断言是否是空
  6. parameter server学习
  7. windows中不能创建的目录
  8. 计算机存储单位--“大数据”概念
  9. QIIME2-傻瓜式安装
  10. LInux sed命令详解