博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《代码阅读方法与实现》阅读笔记一
阅读量:5216 次
发布时间:2019-06-14

本文共 1939 字,大约阅读时间需要 6 分钟。

读了《代码阅读方法与实现》对自己的编程有一定的帮助,以下我对本书内的一些感觉对自己有帮助的东西坐下总结。

前几天开始,看《代码阅读方法与实践》,希望能够有所提高。 

序言: 
有一扇窗,从未打开,却要永远关闭; 
有一些人,确实存在,我们却无缘相见; 
有一种生活,还没有到来,我们却已永远离开。 
学习编写伟大代码的方式是阅读代码。 
Robert Glass:“通过正确的使用(代码)审查,软件产品中90%以上的错误能够在测试之前消除。” 
本书分析了几百个代码片段,支出其中的技巧、陷阱和(同等重要的)习惯用法。 

这句话我很认同,我认为每一位成功的程序员都是从阅读别人的优秀代码中汲取对自己编程有帮助的东西,慢慢的就提升了自己的能力。

前言: 
今天,我们从阅读中得到的东西,甚至相当于我们在过去14年中的亲身体会。 
我想介绍有可能出现在软件开发人员面前,与代码相关的大部分概念,包括编程构造、数据类型、数据结构、控制流程、项目组织、代码规范、文档和构架。 
本书中提供的许多源代码示例都来自NetBSD的源代码。NetBSD主要的目标就是强调正确的设计和编写良好的代码,这使得它成为提供源代码示例的最佳选择。 
第一章   导论
 
我很遗憾地告诉大家,就在最近,我再次察看了我的程序(质因子和井字游戏),它们没有任何形式的注释或文档。阅读实际的、编写良好的代码,可以更加深入地了解如何构造与编写重要的系统,仅仅编写小型的程序学不到的这种能力。掌握了本书的内容之后,您将:能够阅读和理解重要软件的代码;领会许多重要的软件开发概念;知道如何探索大型的代码体;拥有大多数重要的高级、低级编程语言的阅读能力;认识到现实软件醒目的错综复杂性。 
1.1为什么以及如何阅读代码 
将代码作为文献;要养成一个习惯,经常花时间阅读别人编写的高品质代码。就像阅读高品质的散文能够丰富词汇、激发想象力、扩展思维一样,分析设计良好的软件系统的内部结构可以学到新的构架模式、数据结构、编码方法、算法、风格和文档规范、应用程序编程接口(API),甚至新的计算机语言。阅读高品质的代码还可以提高您编写代码的水准。 
通过下面的这些征兆,可以容易地识别出低品质的代码: 
编程风格不一致;结构不必要的复杂或难以理解;明星的逻辑错误或疏忽;过度使用不可移植的构造;缺乏维护。 
要有选择的阅读代码,同时,还要有自己的目标。 
模式pattern编码风格coding style 设计模式design pattern
 
要注意并重视代码中特殊的非功能性需求,这些需求也许会导致特定的实现风格。对可移植性、时间和空间效率、易读性、甚至迷惑性的需求都可能导致代码具有非常特殊的特征。 
Slicing 切片
 
关于维护:从问题的表现形式到问题的根源来分析代码。不要沿着不相干的路径误入歧途。编译程序时请加入调试支持,并使用调试器的栈跟踪机制、单步执行、以及数据和代码断点来缩小搜索的范围。 
关于演进:关键的思想是对所分析的代码的范围有所选择;大多数情况下,实际需要理解的代码只是系统全部实现的很小一部分。在实际工作中,通过选择性地了解与更改一两个文件,就能够修改一个具有上百万行代码的系统(如典型内核或窗口系统);我强烈建议,读者应尽可能地亲身体会一下这种操作的成功所带来的令人愉悦的感受。在有选择地处理大型系统的各个组成部分时,应该采用的策略概括如下:定位到感兴趣的代码;单独了解各个特定的部分;推断节选出的代码与其余代码的关系。 
当向系统中增加新功能时,首先的任务就是找到实现类似特性的代码,将它作为待实现功能的模板。相似的,当修改一个现存的特性时,首先需要定位底层的代码。从特性的功能描述定位到代码的实现,可以按照字符串消息,或使用关键字来搜索代码。 
定位到该特性后,就可以开始研究它的实现(跟踪所有相关的代码)、设计新的特性或增加新的功能,以及定位可能影响到的区域――代码中与新代码发生交互的其他部分。在大多数情况下,您只需要彻底了解这些代码就足够了。 
阅读代码寻找重构机会时,先从系统的架构开始,然后逐步细化,能够获得最大的效益。 
关于重用:不要期望太高。代码的可重用性是一个很诱人,但难以掌握的思想;降低期望就不会感到失望。编写可重用的软件可能会增加50%的开发工作量。 

前面书中为我们提示了优秀代码是能够重用的,每一个优秀的程序员都应该有标准的书写规范,这样有助于代码的整理以及后面对程序进行测试维护的时候能够快速准确找到错误代码的位置,同样规范的代码也可以避免不必要的代码错误问题。整体看起来明确,鲜明。这样的代码更容易被人接受。

转载于:https://www.cnblogs.com/dyc940210/p/4949024.html

你可能感兴趣的文章
gunplot
查看>>
DSOFRAMER使用小结
查看>>
MS CRM 2011 创建基于Fetch的报表 -- 进阶版
查看>>
HTTPS那些事(二)SSL证书(转载)
查看>>
zabbix 监控zookeeper
查看>>
trace与代码跟踪服务
查看>>
Fire!
查看>>
博客园是一个不错的学习交流的网站
查看>>
c++ 赋值操作符的返回值
查看>>
洛谷P2777
查看>>
.Net写txt文件-简单的记录执行日志信息代码
查看>>
Ajax
查看>>
g.i.cs和g.cs
查看>>
二十一、NFS服务
查看>>
降维算法学习
查看>>
实体类属性
查看>>
子类会继承父类对于接口的实现
查看>>
oracle blob 反序列化错误
查看>>
第四周作业
查看>>
iOS 键盘的监听 调整view的位置
查看>>