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,简介 毕业答辩搞定,总算可以闲一段时间,把这段求职经历写出来,也 ...
随机推荐
- 基于Jquery的实现回车键Enter切换焦点
系统默认情况下,使用Tab按键切换页面元素的焦点,有没有想过回车键Enter也可以实现这种功能,并且具有良好的用户体验. 接下来我们使用Jquery实现回车键Enter切换焦点,此代码在常用浏览器IE ...
- Android一键锁屏源码
APK下载 源程序下载 锁屏流程如下(参考于Android一键锁屏开发全过程[源码][附图]) 源码参考于一键锁屏 源码 一共有2个Java文件: package com.example.onekey ...
- svn管理的项目迁移到tfs
1.将.vs .svn文件夹删除 2.连接tfs,签入代码
- iOS-@2x,@3x是什么意思
当我们在公司使用UI给出的图片时候,xxx.png,xxx@2x.png,xxx@3x.png的时候,不知道分别代表着什么! 本人也是菜鸟一枚,全凭自己尝试理解而已,在尝试中得出下面的结论: xxx. ...
- 巨蟒python全栈开发-第6天 is&==
1.小数据池 2.id 3.decode和encode 小数据池 #小数据池:不要死磕就行#python为了简化,搞出来的一个东西 ID (1)# id()函数可以帮我们查看一个变量的内存地址# a= ...
- 找不到ifconfig命令
对于新安装的系统,可能会缺少ifconfig命令,这是因为少安装了net-tools工具,所以只要安装上即可. yum install net-tools -y
- 三、直播整体流程 五、搭建Nginx+Rtmp直播流服务
HTML5实现视频直播功能思路详解_html5教程技巧_脚本之家 https://m.jb51.net/html5/587215.html 三.直播整体流程 直播整体流程大致可分为: 视频采集端:可以 ...
- 维多利亚的秘密 golang入坑系列
原文在gitbook,字字原创,版权没有,转载随意. 在写本文的前一天,2017维密在上海开始了. 为了纪念屌丝界的盛世,特为本节起名维多利亚的秘密.现在的社会,要想出名只有抓眼球.所以写份技术文章, ...
- Extracts
@1:四层和七层负载均衡的区别:所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器.以常见的TCP为例,负载均衡设备在接收到第一个 ...
- apache错误 Unable to open process" with PID 4!
今天打开Apache的时候报错: 22:15:30 [Apache] Problem detected! 22:15:30 [Apache] Port 80 in use by "Una ...