很多好的编程做法都能减轻你的大脑灰质细胞(指脑力)的负担. 将系统"分解",是为了使之易于理解("设计的层次"). 进行审查.评审和测试正是为了减少人为失误.如果你从不犯错,就无须复审自己的软件.但要知道,人的智力是有限的,所以应和他人沟通,来提高软件质量. 将子程序编写得短小,以减轻大脑负荷. 基于问题而不是低层实现细节来编程,从而减少工作量. 通过各种各样的规范,将思路从相对繁琐的编程事务中解放出来. 编程生涯成熟的部分标志就是发展出一种不屈不挠的诚实感.通常表…
一.使用变量的一般事项 1.把变量引用局部化 变量应用局部化就是把变量的引用点尽可能集中在一起,这样做的目的是增加代码的可读性 衡量不同引用点靠近程度的一种方法是计算该变量的跨度(span) 示例 a = 0 b = 0 c = 0 a = b + c a的第一次引用和第二次引用之间存在两行代码,因此变量的跨度是2,b的第一次引用和第二次引用之间存在一行代码,因此跨度是1. 平均跨度可以通过计算各个跨度的平均值得到.来看一个示例 a = 0 b = 0 c = 0 b = a + 1 b = b…
1.变量命名的注意事项 1)可理解性 变量要望文知义,看到这个变量不用看其他的代码就知道这个变量表示什么意思 好的变量命:currentDate, heartRate 糟糕的变量名:newButton, peopleCnt 2)可读性 变量不仅要可理解,还要容易读,要是变量像这样:numberOfShitsInChinaMansFootballNationalTeam,太长了,会疯掉的 研究发现,变量名的长度在8~20各字符的长度时是易于调试的,因此上面的变量可以改为numShitsInTeam…
简单的看了前言,印象最深的还是这本书崇尚"绝不注水"的原则.现实生活中,不仅仅有注水牛肉,瘦肉精的猪肉,很多书籍也是东拼西凑来的内容,不注水的厚书,是十分令人期待的. 第一章:欢迎进入软件构建的世界 软件工程的流程在敏捷开发之前有固定的模式:定义问题,需求分析,规划构建,软件架构,详细设计,编码与调试,单元测试,集成测试,集成,系统测试,保证维护.当然,每一步你都可以找到相关的书籍专门的讲述. 我的理解:软件构件主要的产物是源代码,编写源代码的工程师的素质对软件构建影响很大.在构建活动…
xtrabackup binary最重要的两个过程是backup和prepare,对应的函数分别是xtrabackup_backup_func()和xtrabackup_prepare_func(),这里做一些阅读代码时的笔记. xtrabackup backup的线程模型: 1. 一个log拷贝线程: 2. n个ibd文件拷贝线程: 3. 一个io监控线程: 4. 通过suspend_start/suspend_end文件来标注是否启动终止线程:   typedef struct {    …
这一周博主阅读了<代码大全2>第11章至第13章,第三部分——"变量"就结束了,第四部分作者将转入语句的讨论. 第十一章作者详细阐述了变量名的有效命名规则,第十二和十三章则简略介绍了使用各种数据类型时的注意事项.在这篇博客中我主要会在变量名命名和全局变量的使用上谈谈自己的读书心得. 变量名的力量 我们先来谈谈命名规则的必要性.为什么要有命名规则?会破坏创造性和程序质量吗?这一点我在上一篇读书笔记中已经以最近结对编程为例提到过了.对程序质量的实质约束往往来自高层设计,有效的标…
博主终于继续更<代码大全2>了 (*´・ω・`)⊃,课上老师一再强调读书笔记要写出自己的心得不能简单摘抄,所以我现在基本上只会写一下自己在阅读过程中印象深刻或者有发散思考的地方,字数可能会明显减少.其实之前按原文大段摘抄是考虑到也许真的有一些没办法看到原著的读者...... 本周我阅读了第九章“伪代码编程过程”和第十章“使用变量的一般事项”.第九章主要介绍了伪代码编程过程(Pseudocode Programming Process, PPP)如何减少设计和编写文档的工作量,以及提高这两项工…
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_ioctl实现网络接口的配置的. 具体方法大致如下,即建立一个socket,得到一个fd,然后在此fd上执行ioctl即可完成各种操作(例如,查询/配置mac.ip.mtu,启动/停止网络接口). int fd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(fd, SI…
Linux协议栈代码阅读笔记(一) (基于linux-2.6.21.7) (一)用户态通过诸如下面的C库函数访问协议栈服务 int socket(int domain, int type, int protocol); int bind(int sockfd, const struct sockaddr *addr,  socklen_t addrlen); int connect(int sockfd, const struct sockaddr *addr,  socklen_t addrl…
Linux协议栈代码阅读笔记(二)网络接口的配置 (基于linux-2.6.11) (一)用户态通过C库函数ioctl进行网络接口的配置 例如,知名的ifconfig程序,就是通过C库函数sys_ioctl实现网络接口的配置的. 具体方法大致如下,即建立一个socket,得到一个fd,然后在此fd上执行ioctl即可完成各种操作(例如,查询/配置mac.ip.mtu,启动/停止网络接口). int fd = socket(AF_INET, SOCK_DGRAM, 0); ioctl(fd, SI…