《Clean Code》读书笔记——第二周

本周我阅读了《Clean Code》。

“神在细节中!”,建筑家范德罗如是说。他当然专注于基于宏伟构架之上的永恒建筑形式,他也同样为自己设计的建筑挑选门把手。同样软件开发也是这样,小处见大。在宏伟的建筑作品中,我们也要关注细节的回响。重点便是整理,从而达成Clean。一个很好的例子是对于变量命名,认真对待每个变量名。书中作者说,我们就像一群代码猴子,无视混乱无序,失去代码的真谛。整洁的代码正是迈向编程之美的基础,重要性毋庸置疑。

作者断言,我们永远需要代码。我们可以创造各种工具,但是永远无法抛弃必要的精确性,代码呈现了需求的细节。糟糕的代码可能毁了一个公司,一个工程,整洁的代码不仅有关效率,还有有关生存。勒布朗法则说:稍后等于永不。我们不能寄希望于稍后清理,抱着混乱代码好于没有代码的态度开发。完成课程任务时,我们往往以得到一段可以运行的代码为目标,不注意各种细节,一旦出现问题,需要重构代码,可能连把自己的代码读一遍都痛苦万分。整洁的代码将有利于后期开发,方便他人或者自己随后的阅读。

那么什么是整洁的代码呢?书中询问了一些知名的程序员,获得了众多答案。

  1. 优雅高效,整洁的代码只做一件事
  2. 简单直接,如同优美的散文
  3. 便于他人增改
  4. 对代码全心投入
  5. 没有重复代码

当然这是他们的观点,每个人都可能得到他们自己的答案,并没有真正的权威答案。就我个人看来,整洁的代码应当高效清晰,便于阅读修改,逻辑结构鲜明,更抽象一点,有简洁的美感。是的,要有美感,这种美感来自于程序员编写代码是的清晰逻辑架构,函数的高效使用,以及细节的投入。

软件中随处可见命名,这一细节虽小,对于代码的可读性有很大的影响。书中给出了一些简单的规则,首先应当让命名名副其实,避免误导,作有意义的区分,比如把抽象的单字母变量换成英语单词,这显然会极大增强代码可读性和可描述性。是想C语言和其他高级语言,想必汇编或者机器语言,让人感到简单方便的重要方面就是各种操作被冠以英语单词的‘名字’,同样读得出来,有意义的命名会极大改善你的代码。同时也要注意回避 ‘扮可爱’(试图有趣的命名),双关,添加没用的语境等。

函数是语言的动词,类是名词。函数是代码必不可少的重要部分,要写好函数首先要明白函数是对具体操作的抽象,每个函数里面嵌套一个函数就是一个抽象层级。混杂不同的抽象层级会导致混乱,失去简介。具体的,函数应该做一件事,做好这件事,只做这件事。这样你会收获一个高效简洁的函数,一般而言,这会是一个短小的函数,符合函数编写的第一原则。

初学C语言,重要的一课是如何添加注释,如何规范清晰地添加注释。好的注释可以提供函数使用的信息,对编写意图进行阐释,或者警示其他程序员要注意的细节。但是,注释不是糟糕代码的遮羞布,混乱的逻辑不会因为被描述就变得清晰,好的注释建立在好的代码基础上。过多的注释有时会引起相反的效果,信息过多就是废话,也难以抓住重点。

原文地址:https://www.cnblogs.com/Mrc233/p/8605761.html

时间: 2024-11-06 09:36:10

《Clean Code》读书笔记——第二周的相关文章

读书笔记第二周《程序员的自我修养》

读书笔记第二周<程序的自我修养> ??刚看到书名的时候以为这是一本讲述程序员为人处世,享受生活的文章,当我抱着当小说看消遣的心情从群里下载下来的时候,却发现这实际上是一本干货满满的书.当我看到副标题--链接,装载与库, 我意识到这会是一本让我受益匪浅的书,因为我没有选修过操作系统,编译原理相关的课程,对于代码 是如何在电脑上跑起来的是毫无概念的,每次配置环境变量,配置链接库,都是一头雾水.而且我认为要成为一个优秀的程序员 ,仅仅满足于代码能运行是远远不够的,只有对背后的运行机制有所了解,才能写

Clean Code 读书笔记三

clean code 之方法(函数) - 短小 ,再短小,更短小 20行最佳 只做一件事 准确说来每个方法应该是只做抽象概念上的的一件事 只做一件事的方法是无法把逻辑分段的 自顶向下的代码 To say this differently, we want to be able to read the program as though it were a set of TO paragraphs, each of which is describing the current level of

clean code 读书笔记一

什么是 clean code ? 大神对优雅代码的定义: I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy,

Clean Code 读书笔记五

Use Exception Rather than Return Code(使用异常而不是错误处理) public class DeviceController {... public void sendShutDown() { DeviceHandle handle = getHandle(DEV1); // Check the state of the device if (handle != DeviceHandle.INVALID) { // Save the device status

Clean Code 读书笔记九

要点汇总: 一般性问题 方法名称应该准确表达其具体行为 比如: Date newDate = date.add(5)//加5天?5个月? 最好使用addDaysTo 或increaseByDays 明确方法的行为. 使用多态 代替 switch或if else 比如: class RequestHandler { public void handleRequest(int action) { switch(action) { case LOGIN: doLogin(); break; case

Clean code 读书笔记二

细节汇总: 拒绝在容器类型的命名中使用 该容器类型 List flaggedCells = new ArrayList(); As we'll see later on, even if the container is a List , it's probably better not to encode the container type into the name. -相同的意思,使用一致的拼写,并保证专词专意,一次一意 Spelling similar concepts similar

《javascript权威指南》读书笔记——第二篇

<javascript权威指南>读书笔记--第二篇 金刚 javascript js javascript权威指南 今天是今年的196天,分享今天的读书笔记. 第2章 词法结构 2.1 字符集 JavaScript程序是用Unicode字符集编写. Unicode是ASCII和Latin-1的超集,支持几乎所有语言. ES3 要求支持Unicode 2.1及后续版本 ES5 要求支持Unicode 3及后续版本 2.1.1 区分大小写 JavaScript是区分大小写的. HTML 并不区分大

《Java并发变成实践》读书笔记---第二章 线程安全性

什么是线程安全性 要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对共享的(Shared)和可变的(Mutable)状态的访问.从非正式的意义上来说,对象的状态是指存储在状态变量(例如实例或静态域)中的数据."共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值在其生命周期内可以发生变化.所以编写线程安全的代码更侧重于如何防止在数据上发生不受控的并发访问. 如果当多个线程访问同一个可变的状态变量时没有使用合适的同步,那么程序就会出现错误

《深入理解Java虚拟机》读书笔记---第二章 Java内存区域与内存溢出异常

Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来.这一章就是给大家介绍Java虚拟机内存的各个区域,讲解这些区域的作用,服务对象以及其中可能产生的问题. 1.运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域. 1.1程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型中里,字