说来惭愧, 大概半年前买的, 在书柜里躺了半年了, 前几天看了几页, 很认真的那种看, 仅仅看了几页, 觉得还是能够学到很多东西的, 在此用笔记记录自己的感想和学到的认识到的.
第一章 开篇
第一章讲的是关于给10,000,000数据排序的问题, 引发的思考和程序设计的过程. 现在, 就算是通过最差的算法去排序, 我想都可以完美的在10s之内排序完成, 但是作者那个年代, 却要考虑内存, 算法复杂度等等因素, 就是内存和处理器都足够强大的现在, 找到最好的解决方案也是很重要的. 我觉得优质的代码不仅仅能加快运行效率, 也能提升更好的用户体验, 更重要的是, 优质代码是一个合格程序猿必须的态度.
**准确的描述问题: **第一章作者回答别人的请教时候, 第一次并不知道具体的问题和需求到底是什么, 就开始盲目的作答, 结果答非所问. 其实在工作中, 我么向别人请求问题, 最好是能够详细的描述好自己的需求和待解决的问题, 只有了解所有详细的细节, 才能找到更好的找到解决方案; 接受别人的求助时候, 也要详细的问清楚问题所在, 问清楚具体的用途, 具体需求.
**复杂问题,分步解决: **编程过程中, 难免遇到很复杂的问题, 乍一看没有任何思路, 这时候可以将大的问题, 详细的分布解决, 先定义好每一个具体的步骤, 定义好每个步骤要做什么, 然后具体的去实现每一个步骤, 只要每个步骤都是完美的, 那么问题就可以解决.
**先让程序跑起来: **最近本人在看设计模式, 刚学完组合模式, 然后用oc做了一个简单的小说网站爬虫, 准备爬小说. 动手之前, 我大概考虑了一下, 编码过程中可能会用到的几种类型的节点? 抽象层用抽象类还是接口? 下载一本书中的一个章节应该有哪些步骤? 下载一本书应该有哪些步骤? 应该同步还是异步? 异步的话怎么创建运行循环? 什么时候保存内容到本地, 一个章节保存一次还是一本书统一保存一次? 那一张A4, 类图画了一个小时, 也确定不了到底怎么做, ..........., 尼玛, 越想问题越多, 想着想着就心烦意乱的, 觉得这东西太tm难了, 根本无从下手了. 然后就不管什么章法了, 直接上代码吧! 首先敲出来了下载一个章节的代码, 完成后开始优化代码, 很明显的, 应该用抽象类比较好, 某些需要共用的属性和方法都给提取到抽象类中, 具体处理叶子节点的类, 只需重写一个抽象方法, 然后处理自己请求的结果, 具体的叶子节点该怎么写就怎么写, 最终很快就完成了. 并且本人觉得, 代码质量还可以, 功能模块划分很清晰. 写在后面的: 如果遇到觉得很头大的问题, 首先先分解具体步骤, 其次先写出代码让程序跑起来, 然后优化, 让程序更好的跑起来.
简单的设计:设计者确定其设计已经达到完美标准不是不能够增加任何东西, 而是不能够再减少任何东西. 程序猿应该用该标准检视自己的程序. 简单的程序通常比相同功能复杂的程序更可靠, 更安全, 更健壮, 更高效, 而且易于实现和维护.
网友评论