《代码整洁之道》读书笔记-1

前言

我最近在读《代码整洁之道》这本书,在读的过程中发现如果只是读,不动手做点什么的话,总感觉少了点什么,于是就写点总结,给自己加深印象。当然,本文只是理论,不会讨论如何写出整洁代码。如果你认为这相当枯燥,可以略过。

为什么读它?

正如书中所说,读这本书的原因,无非是想成为一个更好的程序员。

一个优秀的程序员,不应该写出糟糕的代码,不应该给他人带来不必要的困扰。如果你维护过别人糟糕的代码,并且被这种代码绊倒过,那你一定能体会,每次添加或修改代码时,花大量时间去理清原有代码时的焦躁心情。试想一下,如果这些代码是你自己写出来的,或者说别人在维护你的代码时,也是如此,你作何感想?避免写出糟糕的代码,提高自身代码水平,减少可能给他人带来的困扰,还要从自己做起。

什么是整洁代码?

以下是书中提到的解答:

  • c++语言发明者 Bjarne Stroustrup :

    我喜欢优雅和高效的代码,代码逻辑应当直接了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来,整洁的代码只做好一件事。

  • 中译版《面向对象分析与设计》作者 Grady Booch :

    整洁的代码简单直接,整洁的代码如同优美的散文。整洁的代码从不隐藏设计者的意图,充满了干净利落的抽象和直接了当的控制语句。

  • OTI 公司创始人 Dave Thomas :

    整洁的代码应可由作者之外的开发者阅读和增补。它应当有单元测试和验收测试。它使用有意义的命名。它只提供一种而非多种做一件事的途径。它只有尽量少的依赖关系,而且要明确地定义和提供清晰、尽量少的 API。代码应通过其字面表达含义,因为不同的语言导致并非所有必需信息均可通过代码自身清晰表达。

  • 中译版《修改代码的艺术》作者 Michael Feathers :

    我可以列出我留意到的整洁代码的所有特点,但其中有一条是根本性的,整洁的代码总是看起来像某位特别在意它的人写的。几乎没有改进的余地。代码作者什么都想到了,如果你企图改进它,总会回到原点,赞叹某人留给你的代码:全心投入的某人留下的代码。

  • 中译版《极限编程实施》作者 Ron Jeffries :

    近年来,我开始研究贝克的简单代码规则,差不多也琢磨透了。简单代码,依其重要顺序:

    1. 能通过所有测试;

    2. 没有重复代码;

    3. 体现系统中的全部设计理念;

    4. 包括尽量少的实体,比如类、方法、函数等。

  • WiKi 发明者 Ward Cunningharm :

    如果每个例程都让你感到深全己意,那就是整洁代码。如果代码让编程语言看起来像是专为解决那个问题而存在,就可以称之为漂亮的代码。

  • 啥成就都没有 Gxy :

    整洁的代码,它易于维护,干净利落不拖泥带水。整洁的代码一定是在意代码的人写的,经过精心设计的代码。

结语:

你可能会说,时间紧任务重,能跑就行,先上线再说。一个有素养的程序员不会这样做,而且也没必要这样做。把代码写整洁,并不意味着进度就会变慢,实际情况恰恰相反。至少,我观察到的情况是这样。

-- The End.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是Freedoc?Freedoc是什么?

本文讲的是什么是Freedoc?Freedoc是什么?,【IT168 资讯】Freedoc是刘鹏提出的一个概念,其目的是建立一种简易的免费文档共享和版权保护机制。  Freedoc的想法来自Freeware和开源软件:既然大量软件可以免费合法共享&a…

玩转CSS选择器(一) 之 使用方法介绍

前言 前几天整理了CSS一些技术关键字,但是因为自己的知识过于单薄,觉得考虑的不充分有欠缺,随后便在sf.gg提出了这个问题《关于CSS核心技术关键字都有哪些?》,也是为了让厉害的人一起参与进来,用他们的经验…

php基础-1

//echo "hello","aaaa";//输出语法,可以输出多个字符串//print "world"; //可以输出,只能输出一个字符串 用"."拼接可以输出,用","拼接直接报错 //数据类型 int,double,float,string,char…

工业相机和普通相机的区别详解_数码单反相机和胶片单反相机的区别

从相机出世到现在,相机的种类可以分为两种,一个是早期的胶片相片,另一个是现在的数码相机,数码相机的种类也是有很多种,其中最为常见就是单反相机了。那么今天我们就来看看胶片机和单反的区别。相机的种类总的来说可以…

剑指offer之二进制中1的个数

1 问题 实现一个函数,输入一个函数,输出该二进制数据中1的个数。例如9表示二进制数据1001,有2位是1,因此输入9,该函数会输出2。 2 分析 我们先了解下计算机里面位运算,有5种 1)& 这个是与…

ArcGIS 10.6 Data Interoperability Tools的安装与使用(附安装包下载)

ArcGIS平台中提供了一个数据交互操作工具Data Interoperability Tools,安装Desktop的时候不是一并安装的,这样导致Data Interoperability Tools工具箱下的工具(如Quick Import)全面有一个红色的叉号,无法正常使用,解决办法是手动安装Data Interoperability Tools,位于软…

女朋友强依赖我!我引入IOC后,从此我们的关系微妙而稳固!

此文从面向对象设计角度分析依赖倒置原则,引入依赖注入,IOC相关内容进行探讨,文中引用女朋友案例可能引起分手风险,故理解为 new 对象。想起在学校的时候,有一个任务就是设计一款宠物商店项目。那时候引入三层架构设计…

Qt 第二步 槽与信号(一) 实现点击按钮并弹窗

信号与槽是Qt中的核心,也是Qt的特有的。在Qt中信号与槽的关键字为slots、signals、emit。 具体信号与槽将会在下一节中详细说明,因为担心一些读者在没了解过槽与信号前直接讲述过深导致门槛提高,阅读困难,所以当前这一篇文将在不理…

mvc 返回一个对象 到视图接收

public ActionResult InfoFrame() { List<Users> list new List<Users>(); Users user new Users(); if (Session["UserID"] null)//判断是否没登录 { return RedirectToAction("LoginIndex", "Login"); } else { string sql st…

CAD格式数据转ArcGIS数据方法总结

本文总结CAD数据转换为ArcGIS支持数据格式的常见几种方法。 目录 1. 在CASS软件中,导出为shp格式 2. 在ArcGIS软件中加载(Add Data)DWG格式的CAD数据 3. 使用ArcGIS提供的Conversion Tools

语言 分组计算hr_干货 | HR不得不知的面试技巧

面试是求职者倍感煎熬的时刻&#xff0c;但其实&#xff0c;面试也让不少HR们颇有压力。毕竟&#xff0c;要在短时间内快速了解一个人&#xff0c;并判断是否适合岗位、业务部门会不会满意、能不能适应企业文化等并不容易。所以&#xff0c;今天Anna给大家整理了一份面试问题汇…

剑指offer之求数组里面只出现一次的的两个数据

1 问题 一个整型数组里除了两个数字之外&#xff0c;其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 2 分析 第一种方法&#xff1a;我们用位运算 我们想到位运算 &#xff08;1&#xff09; a^a0&#xff08;2&#xff09;a^0a&#xff08;2&#xff09;a…

python3 爬虫第一步 简单获取网页基本信息

注&#xff1a;本系列专栏需要有简单的python3 语言基础 爬虫的相关作用在此就不再说明&#xff0c;相信能够点进该系列文章的读者都已经了解了爬虫是什么&#xff0c;并且能够做什么。由于是发布在互联网的文章&#xff0c;所以系列文章都不以书籍的方式从头到尾的叙述作用及其…

将旧版 WCF 应用程序迁移到 CoreWCF

前言CoreWCF 项目团队发布了 CoreWCF 的 1.0 版本&#xff0c;这是 WCF 到 .NET Core 平台的移植。我觉得&#xff0c;CoreWCF 适用于这类场景使用——基于 WCF 的旧版应用程序已在 Windows 平台上运行了很多年&#xff0c;但是希望将代码迁移到 .NET Core&#xff0c;以利用 L…

C语言中的短路现象

C语言短路现象讲解 - 短路现象 1 表达式1 && 表达式2 && 表达式3; 分析&#xff1a; 只有当表达式1为真&#xff08;非0&#xff09;时才需要判断表达式2的值&#xff1b;只有表达式1和2都为真&#xff08;非零&#xff09;时&#xff1b;才需要判断表达式3的…

记录我的学习历程--二维数组解决平面图形题

打印出3 7 2 4 6 81 5 9代码如下转载于:https://blog.51cto.com/4139737/1684269

剑指offer之归并排序

1 问题 是建立在归并操作上的一种有效的排序算法,该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。将已有序的子序列合并&#xff0c;得到完全有序的序列&#xff1b;即先使每个子序列有序&#xff0c;再使子序列段间有序。若将两个有序表…

ArcGIS 10.6连接Access 2007(.accdb)及以上版本数据库

Microsoft Office 2007 引入一种新的 Microsoft Access 数据库格式,accdb,这是在 Access 2007 中保存或创建数据库时的新默认格式。若不使用 OLE DB,ArcGIS 无法直接读取或写入这种新的 Microsoft Access 格式,包括直接通过添加数据 对话框访问 accdb 文件。 如果是在安装了…

实现线段切割法_漫画:如何实现抢红包算法?

发出一个固定金额的红包&#xff0c;由若干个人来抢&#xff0c;需要满足哪些规则&#xff1f;1.所有人抢到金额之和等于红包金额&#xff0c;不能超过&#xff0c;也不能少于。2.每个人至少抢到一分钱。3.要保证所有人抢到金额的几率相等。小灰的思路是什么样呢&#xff1f;每…

python3 爬虫第二步Selenium 使用简单的方式抓取复杂的页面信息

Selenium 简介 该系列专栏上一篇爬虫文章点击这里。 网站复杂度增加&#xff0c;爬虫编写的方式也会随着增加。使用Selenium 可以通过简单的方式抓取复杂的网站页面&#xff0c;得到想要的信息。 Selenium 是操作浏览器进行自动化&#xff0c;例如自动化访问网站&#xff0c…