Book Review of "The Practice of Programming" (Ⅰ)
The Practice of Programming
In the preface, the author illustrates four basic principles of programming - simplicity, clarity, generality, automation.
I suppose that everyone has his own programming experience and preference, but with predecessors' valuable guidence, chances are that we can write more beautiful code.
Pieces of summaries and abstracts are organized as follows:
Charpter 1 STYLE
The purpose of style is to make the code easy to read for yourself and others, and good style is crucial to good programming.
Names
- descriptive names for globals, short names for locals
- names with p for pointers; initial capital letters for Globals; all capitals for CONSTANTS; active names for functions
- be consistent
Expressions and Statements
- avoid negative expressions possibly
- use parentheses in mixed unrelated operators
the relational operators (< == !=) have higher precedence than the logical operators (&& || );
the logical operators bind tighter than assignment ( = );
the bitwise operators (& |) have lower precedence than relational operators ( == )
- break up complex expressions
- be careful with side effects: (e.g. the following expression is wrong)
scanf("%d %d", &yr, &profit[yr]);X
Consistency and Idioms
- Use a consistent indentation and brace style
- Use idioms for consistency
Wrong code:
gets(buf);X //never use 'gets', 'fgets' is better
p = malloc(strlen(buf));
strcpy(p, buf);X //strlen does not count the '\0' that terminates a string, while strcpy copies itRight code:
p = malloc(strlen(buf)+);
strcpy(p, buf);- the return value from malloc, realloc, strdup, or any other allocation routine should always be checked
Function Macros
One of the most serious problems with function macros is that a parameter that appears more than once in the definition might be evaluated more than once
Magic Numbers
By giving names to the principal numbers in the calculation, we can make the code easier to follow
Define numbers as constants, not macros
const int MAXROW = . MAXCOL = ;static final int MAXROW = , MAXCOL = ;C also has const values but they cannot be used as array bounds, so the enum statement remains the method of choice in C.Use the language to calculate the size of an object
sizeof (int)
sizeof(array[])
sizeof(buf)
Comments
- Comment functions and global data
Sometimes code is genuinely difficult, perhaps because the algorithm is complicated or the data structures are intricate. In that case, a comment that points to a source of understanding can aid the reader
Don't comment bad code, rewrite it
Don't contradict the code. When you change code, make sure the comments are still accurate
Book Review of "The Practice of Programming" (Ⅰ)的更多相关文章
- Book Review of “The practice of programming” (Ⅳ)
The practice of programming Chapter 4 Interfaces A good programmer should always be good at designin ...
- Book Review of “The practice of programming” (Ⅲ)
The practice of programming Chapter 3 Design and Implementation In this section, we focus on one kin ...
- Book Review of “The practice of programming” (Ⅱ)
The practice of programming Chapter 2 Algorithms and Data Structures Searching sequential search (li ...
- 2015年第2本(英文第1本):《The Practice of Programming》
2015年计划透析10本英文原著,最开始选定的第一本英文书是<Who Moved my Cheese>,可是这本书实在是太短.太简单了,总体的意思就是要顺应变化,要跳出自己的舒适区,全文不 ...
- net programming guid
Beej's Guide to Network Programming Using Internet Sockets Brian "Beej Jorgensen" Hallbeej ...
- FRP represents an intersection of two programming paradigms.
FRP represents an intersection of two programming paradigms. Functional programming Functional progr ...
- [转]9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
1,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾. 首先说说我拿到的offer情况: 微软,3面->终面,搞定 百度,3面->终面,口头of ...
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
1,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也作为之前三个半月的求职的回顾. 首先说说我拿到的offer情况: 微软,3面->终面,搞定 百度,3面->终面,口头of ...
- (转)9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
原文:http://www.cnblogs.com/figure9/archive/2013/01/09/2853649.html 1,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也 ...
随机推荐
- Android实例-退出程序
Android实例-退出程序 http://www.cnblogs.com/FKdelphi unit Unit1; interface uses System.SysUtils, System.Ty ...
- POJ 3150 Cellular Automaton(矩阵快速幂)
Cellular Automaton Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 3504 Accepted: 1421 C ...
- 17.Recflection_反射
www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html
- 服务器端Session和客户端Session(和Cookie区别)
Session其实分为客户端Session和服务器端Session. 当用户首次与Web服务器建立连接的时候,服务器会给用户分发一个 SessionID作为标识.SessionID是一个由24个字符组 ...
- WebStorm7.0的破解版
EMBRACE 24718-1204201000001h6wzKLpfo3gmjJ8xoTPw5mQvYYA8vwka9tH!vibaUKS4FIDIkUfy!!f3C"rQCIRbShpS ...
- [动态规划]UVA10285 - Longest Run on a Snowboard
Problem C Longest Run on a Snowboard Input: standard input Output: standard output Time Limit: 5 sec ...
- redis的数据类型与应用场景(二)
1. 如何学习 redis有好多数据类型,有这么多数据类型,我们不可能每个都记得完完全全.但是我们必须知道它有哪些数据类型,每个数据类型是怎样的,有什么作用.redis的每一个数据类型都有一大堆命令, ...
- tf.clip_by_value:将tensor中的0和NONE进行范围限制的函数
tf.clip_by_value clip_by_value( t, clip_value_min, clip_value_max, name=None) Defined in ...
- 科班学习java遇到瓶颈,每天云里雾里怎么办?
声明:这个问题困扰了我好久,今天在知乎找到了答案.知乎链接https://www.zhihu.com/question/24240982,感谢大神@Tony He的回答. 作者:Tony He链接:h ...
- 海量数据处理之Bloom Filter详解
前言 : 即可能误判 不会漏判 一.什么是Bloom Filter Bloom Filter是一种空间效率很高的随机数据结构,它的原理是,当一个元素被加入集合时,通过K个Hash函 ...