Writing Clean Code 读后感

最近花了一些时间看了这本书,书名是

《Writing Clean Code ── Microsoft Techniques for Developing Bug-free C Programs》

这里主要总结了一些里面的编程思想。

为空语句加上NULL

当需要使用空语句的时候,最好写上NULL, 比如:

  1. if (music_on())
  2. NULL;
  3. else
  4. turn_it_on();

参数类型相同的问题

如果函数中两个参数的类型相同,如果用户调用这个函数时错误替换了参数的顺序,就会出现问题。

比如

  1. bool are_you_that_guy(int id, int year)

这里如果可以修改其中一个类型的话(比如把int改成short),当写反参数时,编译器会做出警告,进而可以避免这种问题。

代码查错

不要依赖测试人员帮你查出代码中的问题,在写代码的时候要尽量做单元测速,保证每个单元都没有问题,这样做似乎会花费大量精力,而且会拖延进度,但是对于最后是由很大好处的,要知道程序员一般会花大部分时间来解bug,让bug在摇篮中被扼杀是一个好事情。不过对于维护一堆庞大代码的程序员来说就不一样了。

再写代码的时候要善用ASSERT,做好一个DEBUG开关,当release给客户的时候将ASSERT去掉。ASSERT的作用是将真正的错误显露出来(比如向函数传入了一个NULL指针),断言的是真正的用法不当,而不是一般的错误(比如内存分配失败,返回NULL)。

使用lint等工具也可以帮忙分析代码中的问题。(我没用过,后面试试)。实际上使用GCC的Wall开关就可以得到很多warning,进而解除一些问题。

可以写两个不同版本的代码来查错,一个是效率较低的,用于验证的代码,另一个是需要release的代码。

对代码进行逐条跟踪,对于每一种情况进行单元测试,这一点可能很多人做不到。

代码风格

不要让函数既返回结果,又返回错误代码。最具表现性的是

  1. int getchar ( void );

当正确的时候返回一个int。getchar为什么返回int而不是返回char,这让人感到不可思议,实际上int值是为错误的情况准备的,也就是EOF

EOF的定义:

It is a macro definition of type int that expands into a negative integral constant expression (generally, -1).

这里可以认为它是-1.所以这样一来就很容易出问题了。好的做法应该将数据传入到函数的括号中,函数调用正确与否赋给返回值,比如:

  1. int getchar(char *char_val);

不要写稀奇古怪的代码

好的代码应该是具有可维护性的,因为总会有新手来维护你的代码。当你把所有

代码都挤在一行,比如这种类型:

  1. plan = planA ? (planB ? planC : planX) : (planD ? planE : planY)

这样会让人摸不着头脑。应该将它们拆成if和else语句,如果if和else嵌套太深,那么就是自己的设计问题了。

实际上不要用类似名称的变量,比如planA和planB,很容易搞混。

不要随便改别人代码

这个条款看起来不可理喻,有时候也会该出问题,除非你进行了详尽的测试。

比如将

  1. int identity;
  2. identity = whois(tanhangbo);
  3. TELL(identity );

改成

  1. TELL(whois(tanhangbo))

如果TELL的定义是

  1. #define TELL(x) (x + x*2)

那么whois会被调用两次。

知错能改

当然了,最重要的准则,同一个错误不要犯两遍。

--------------------

需要注意的东西还是很多的,这里只是提到了一部分。

写代码的时候还是要多思考的,如何能写出好代码,容易维护,bug少。这本书还是不错的,推荐看一看。

为知笔记的内容发到博客园还是有点问题,其中代码格式化好之后再发上去,格式就没了。不过能够方便地发上去已经不错了。

来自为知笔记(Wiz)

时间: 2024-10-25 07:38:38

Writing Clean Code 读后感的相关文章

writing clean code with modern java

https://www.youtube.com/watch?v=uEHJ5CHaF08 主要顺便练练英文 YouTube上真的很多超赞的视频,有关语言特性的,架构的,代码整洁的...最近一直在每天花一个小时左右看英文相关的speak,然后基本每天会看一下medium的文章,练英文. 1.接口的deafault method and private method public interface MyInterface { default void defaultMethod() { privat

Building Maintainable Software-java篇之 Write Clean Code

Building Maintainable Software-java篇之 Write Clean Code Writing clean code is what you must do in order to call yourself a professional. -Robert C. Martin Guideline: ? Write clean code. ? Do this by not leaving code smells behind after development wor

[转]Clean Code Principles: Be a Better Programmer

原文:https://www.webcodegeeks.com/web-development/clean-code-principles-better-programmer/ ----------------------------------------------------------------- "My code is working well, the website I built is looking great, and my client is happy. So why

JavaScript Patterns 2 Essentials - Writing Maintainable Code

Revisiting the code after some time has passed requires: ? Time to relearn and understand the problem ? Time to understand the code that is supposed to solve the problem As the application matures, many other things happen that require your code to b

10 Tips for Writing Better Code (阅读理解)

出发点 http://www.tuicool.com/articles/A7VrE33 阅读中文版本<编写质优代码的十个技巧>,对于我编码十年的经验,也有相同感受, 太多的坑趟过,太多的经历走过,对良好编码的技巧,只能说更加心有灵犀. 下面从英文原版阅读,结合自己的理解,尝试注解下作者的观点. 注解 -- 原文见下网址 https://cdiggins.github.io/blog/programming-tips.html 10 Tips for Writing Better Code 注:

说说怎么写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,

the art or readable code读后感

1 变量,函数,对象 命名生动,且不会产生歧义 2 利用变量,函数,对象名称传递含义,减少注释,在必要处注释:todo,代码的问题,为什么要这么写 ,总结 3  代码可读性要强,美观,简洁 4 减少变量和控制流变量,缩小变量的作用域,鼓励写const或者final 5 抽取重复代码和子功能 the art or readable code读后感