《代码之美》阅读笔记

《代码之美》 是一本非常不错的书,而且很独特,独特之处请看如下介绍(来自百度百科):
38位大师级的程序员,一步步讲解他们的项目架构,开发时的种种折中考虑(trade-offs)以及何时必须打破常规,寻求突破。
全球38位顶尖高手、众多语言之父经典之作。
本书收录的是软件设计领域中的一组大师级作品。每一章都是由一位或几位著名程序员针对某个问题给出的完美的解决方案,并且细述了这些解决方案的巧妙之处。
本书既不是一本关于设计模式的书,也不是一本关于软件工程的书,它告诉你的不仅仅是一些正确的方式或者错误的方式。它让你站在那些优秀软件设计师的肩膀上,从他们的角度来看待问题。
本书给出了38位大师级程序员在项目设计中的思路、在开发工作中的权衡,以及一些打破成规的决策。
只可惜自己水平还有限,有些章节还不能领悟到其中三味。
下面的一点总结仅从个人观点和个人认知角度对其中部分章节说点自己的理解。有兴趣者可以到CSDN搜索本书,英文版和中文版都有。

第1章 A REGULAR EXPRESSION MATCHER (by Brian Kernighan)
递归函数的美妙,功能集的选取

第3章 THE MOST BEAUTIFUL CODE I NEVER WROTE (by Jon Bentley)
只通过分析来计算代码的时间复杂度

第4章 FINDING THINGS (by Tim Bray)
分析代码中的性能瓶颈之后再做优化(大多数性能瓶颈出现在IO操作和密集运算)
有关搜索的问题,作者给出的解决方案是:
首先试着使用语言内建的哈希表;
如果性能不能令人满意,那么就尝试使用二分查找;
只有前面两种方法都不能获得满意的结果,才会考虑使用更复杂的方法。
作者给出的比较独特的二分查找代码(java 代码):


第5章 CORRECT, BEAUTIFUL, FAST(IN THAT ORDER):LESSONS FROM DESIGNING XML VERIFIERS
时间复杂度从O(N)到O(logN),再到O(1)(查表法),最后加上缓存。

第7章 BEAUTIFUL TESTS
如何对2分查找进行完整的测试?对于费时的大数据测试,我们可以拆分成每一个小步骤来进行模拟测试,并不一定要制造出大数据,要抓住为题的关键点。

第8章 ON-THE-FLY CODE GENERATION FOR IMAGE PROCESSING
在C#中即时生成中间代码

第10章 THE QUEST FOR AN ACCELERATED POPULATION COUNT
如果快速统计一个int数值的二进制中有多少位为1?(分治法)


第16章 THE LINUX KERNEL DRIVER MODEL: THE BENEFITS OF WORKING TOGETHER
用C实现面向对象的编程?

第18章 PYTHON'S DICTIONARY IMPLEMENTATION: BEING ALL THINGS TO ALL PEOPLE
python字典类的key和value可以是任意类型,做为C++程序员想一想,要如何用C++实现这样的类呢?

第24章 BEAUTIFUL CONCURRENCY
并发编程中锁带来的问题

第28章 BEAUTIFUL DEBUGGING
多版本迭代过程的二分调试;对出现BUG的输入进行最小化分离。

第32章 CODE IN MOTION 
漂亮代码的7个原则:
1 像书本一样
2 功能相似的代码在外观上也保持相似
3 减少缩进
4 分解大型的代码块
5 对代码进行注释
6 整理代码
7 与已有的编码风格保持一致

第2点的示例代码:

第5点的示例代码:

第3点:减少缩进。bug的数量通常和if的数量和if的嵌套深度成正比。


第33章 WRITING PROGRAMS FOR "THE BOOK"
讨论了该如何判断平面坐标系上的3点是否共线的问题
最终解决方案:计算三点围成的三角形的面积是否为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值