程序员修炼之道 从小工到专家
注重实效的途径
DRY原则:就是dont repeat yourself,含义是系统中的每一项知识都必须具有单一,无歧义,权威的表示。即要避免重复。 程序员需要持续不断的维护,这是整个开发过程中的例行事务。DRY使开发更易于理解和维护。 重复的类型:强加的重复,指环境因素导致的重复.解决需要智慧。 信息的多种表示(如不同平台不同语言对同一信息的表示),这样可能导致不一致,通过编写简单的过滤器或代码生成器来解决,即从同一个源(信息的表示)来生成。 要把低级的知识放在代码中,把注释保留给其他的高级说明。即指分层设计,高层的逻辑尽量抽象以避免修改。这样底层和高层解耦,也防止注释过期。无意的重复和无耐性的重复要被避免。 开发者之间的重复。正交性: 含义就是解耦。用来表示某种不相互依赖性或者解耦性。 需要消除无关事务之间的影响。组合正交组件提高效率。不要依赖你无法控制的事务属性。 建立正交的系统: 模块化 层次化。 AOP让你在一个地方表达本来会分散在源码各处的某种行为。 限制模块之间的交互。 遵守得墨忒耳法则缩小了调用类中的相应集的规模。 在编码上: 让代码保持解耦 避免使用全局数据 避免编写相似的函数 可撤销性 含义是不存在最终决策,所以功能要可撤销。即代码可回滚。 使用版本控制系统。 采用灵活的架构。 设计正交的系统。 曳光弹和原型化 区别在于原型化更注重为交互建立原型,最终会被丢弃。 而曳光弹更偏重对核心功能的实现,最终会成为系统的一部分。 曳光弹的使用场景是当需求模糊,无法做出宏观上完善的系统设计时。采用盲人摸象的方式进行开发,即先实现确定的地方. 估算:从已有的类似项目来进行估算比较靠谱 确定估算粒度。如天,周,月。 确定问题的范围,即制定约束条件。 所有的估算都以问题的模型为基础。去问已经做过这件事的人 估算系统:建立系统模型,把模型分解为组件,给每个参数指定值,计算答案,追踪估算能力。