程序员修炼之道(四)(五)

程序员修炼之道

这本书与*实战等书籍不一样的是,这本书是教人技巧。一些软件开发中的技巧,我写下这些博文主要是留作一个学习后的思路整理。对于此书,我也理解不深,可能我所遇到的情况还是太少,经历的也太少。

第四章

实效的偏执

永远无法写出完美的代码

1.按合约设计(DBC)

  • 将设计需求以文档的形式进行保存记录,可以更好的对比需求和最终结果的一致性。也利于将来的修改,工作的交接。
  • 断言式编程,如果在某些判断中,你所认为str不可能是空,那么就使用断言来保证他。就像是前文曾说到的那样,如果你觉得某些事情是什么样子,不要假想,去证明。
  • 异常的使用,如果可以捕获到异常,那么就采用异常处理来统一处理错误情况。
  • 配平资源,资源是有限的,任何时候编程都要有始有终。

第五章

弯曲或折断

如章节名一样,很多时候我们要处理一些情况,保证系统的健壮,也要进行妥协

1.墨忒尔法则

这块也讲了解耦合的重要性

  • 动态配置,对于系统的很多配置,是可以配置的,如写在yml中,properties中,不要集成在程序中。如果要对系统进行私有部署,或者新版本部署,配置的优势就可以提现出来。另外如果可以让系统在运行时候读取配置,那么在你改动配置以后,不用重新启动系统。
  • 元数据驱动的应用,将抽象放进代码,将细节放入元数据。此段落也主要讲的是,数据,代码进行分离
  • 协作式配置,需要处理不同数据版本,以及库,系统的不同版次,那么久需要协作式配置,如web端需要兼容chrome,IE等浏览器;如后端需要配置develop环境,test环境,online环境
  • 不要编写渡渡鸟代码,没有元数据,你的元数据就不可能获得它应有的适应性和灵活性。毛里求斯岛上的渡渡鸟因为不能适应人类和家畜的出现,很久就灭绝了。这也是在告诉我们如何让自己的代码更灵活,而不是没有灵活性的死代码。

2.时间耦合

这块我粗略的认为是在讲代码要能容许并发的的存在

  • 思考的时候,我们通常会想,用户先进行A然后进行B,但我们在开发中也要考虑到:同时进行A,或者是先进行B的情况,允许并发,并考虑接触任何时间或者次序上的依赖。
  • 工作流,将用户的工作流当做需求分析的一部分来进行建模和分析。我们要找出在同一时间可能发生什么,以及什么必须严格的以次序发生。用好并发和次序。书中有个例子很有趣,也很形象,将以图片的形式展现在下方。这里写图片描述这里写图片描述
  • 架构,文中此处主要讲了一个小故事,讲的是他们以前写的一个系统,处理东西。最后在系统架构的层面上进行了并发的加持。得以优化。
  • 为并发进行设计,编写线性代码会让我们容易做出一些假定,引我们走向不整洁的编程,但并发迫使咱们更仔细的对事物进行思考,牢记住“这不是一个人的舞台”,很多事情都在同一时间发生。
  • 更整洁的接口,整洁的接口可以提高可维护性,因为没有包含“意外”,不会引发神秘bug。
  • 部署,在系统的设计初始阶段就应该考虑到并发和伸缩性,灵活的处理部署方式。

3.它只是试图

拒绝把程序写成一个大块,而应该去分而治之。将程序划分成模块,每个模块都有自己的责任。单一职责。

  • 发布/订阅,对于一个事件感兴趣,我们只需要登记我们自己,publisher追踪所有感兴趣的subscriber。
  • model-view-controller,MVC模型没必要进行介绍了。
  • 仍有有耦合,虽然我们尽力避免耦合,但我们仍无法完全避免耦合。

4.黑板

警察通常会在黑板上写上案件信息,他们看黑板从中发现线索,然后加上他们的发现。

  • 黑板的实现
  • 应用实例
    ps.此处不是很懂,以后更

猜你喜欢

转载自blog.csdn.net/u011391773/article/details/80542237