9月份 《程序员修炼之道——从小工到专家》读后感2

发布时间 2023-11-05 22:58:09作者: 贾贾鱼

第二章 注重实效的途径
1 重复的危害
系统中的每一项知识都必须是单一、无歧义、权威的表示;
DRY- Dont repeat yourself 不要重复你自己;
重复如何发生
       强加的重复
               信息的多种表示
               代码中的文档; 把注释保留给其他的高级说明
               文档与代码
               语言问题;
        无意的重复
               设计问题; 使影响局部化;
无耐性的重复
               走捷径;欲速则不达
开发者之间的重复
               交流,促进知识的沟通;
2 正交性
正交性:表示某种不相依赖性或是解耦性;
消除无关事物之间的影响,让组件独立、具有单一、良好定义的目的称为内聚;
正交的好处
提高生产率
        改动能局部化;
        促进复用;
        重叠减少,生产率提高
降低风险
        降低开发中的固有风险
        问题代码被隔离
        系统更健壮;
        更好的测试;
项目团队
        团队的组织有许多重叠,各个成员对责任感到困惑,效率差;
设计
        系统多个模块,分层架构
工具箱与库
        引入第三方要注意保持系统正交性明智选择技术
        面向切面编程 AOP
编码
        每次编码都有降低系统正交性的危险;
        让你的代码保持解耦
        避免使用全局数据
        避免写相似的函数
        养成不断批判对待自己代码的习惯;
测试
        正交的设计和实现,易于测试;
文档
        正交性利于文档的编写
3 可撤销性
不必作出许多关键的、不可逆转的决策;
不存在最终决策;
保持架构的灵活性,预先考虑问题,抽象服务等,只需要改配置文件;
薛定谔的猫
        猫,粒子50%机会分裂猫会死,猫是死是活?
        答案都是; 每当有两种可能结果的亚核反应发生时,宇宙就会克隆,一个发生一个不发生,只有你打开盒子才知道,你在哪一个宇宙中;
        每一项代码决策都导致不同版本的未来;
4 曳光弹
黑暗中机枪射击?1 找出目标确切的位置 2 曳光弹与常规弹交接射击,不断获得反馈;
在黑暗中发光的代码;总有改动需要完成,总有功能需要增加,渐进的过程;
优点
        用户能及早看到能工作的东西
        开发者构建了一个他们能在其中工作的结构;
        有了一个集成平台;
        有了可演示的东西
        能感觉到工作的进展;
原型制作:探究系统的某项具体的方面,对概念实验后,东西扔掉,根据学到的经验教训重新编码;
        你设计一个用户界面,用户满意后,把它扔掉,重新用目标语言编码;
原型制作生成用过就扔的东西,曳光代码虽然简约,却是完整的,并且构成了最终系统骨架的一部分。
5 原型与便笺
为了学习而制作原型
怎样使用原型
        正确性:适当使用虚假数据
        完整性:出错入参
        健壮性:可能不完整
制作架构原型
        主要组件的责任是否得到良好的定义
        主要组件的协作是否定义
        耦合是否最小化
        能否确定重复的潜在来源
        接口定义和各项约束是否可接受
怎样不适用原型
        确定是用过就扔,不会不熟的,不完整;
        坚持部署原型,适用曳光弹;
6 领域语言
靠近问题领域编程
        实现小型语言
        数据语言与命令语言
        独立语言
        易于开发还是易于维护?可扩展性与维护权衡
7 估算
估算,以避免意外发生;
多准确才足够准确; 某种程度上,所有的解答都是估算,只不过有一些更准确;
使用估算的单位不同会对结果的解读产生影响;
        130个工作日,相当接近的时间完成
        6个月,5-7个月完成;
        130更高的精确程度;
估算来自哪里;以问题的模型为基础;
理解提问的内容
        建立系统的模型;建立粗略、就绪的思维模型
        把模型分解为组件;每个组件都有一些参数
        给每个参数指定值
        计算答案
        追踪你的估算能力
估算项目的进度
        检查需求
        分析风险
        设计、实现、集成
        向用户确认
在被要求估算时说什么
        我等会儿回答你,今天晚上给你答复;