11月阅读笔记其二

程序员修炼之道–从小工到专家——读书笔记

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

14 纯文本的威力
持久存储知识的最佳格式是纯文本;
用纯文本保存知识;
缺点:存储空间多,计算代价高;
优点:
保证不过时;活的久,可阅读;
杠杆作用:各种格式都可纯文本保存;
易于测试;
15 shell游戏
工作台就是命令shell; iterm2
GUI好处所见即所得,所见即全部所得;
学习shell,利用命令shell的理论;
16 强力编辑
学习一种编辑器,将用于所有编辑任务:代码,文档,备忘录,系统管理等;
优点:可配置;可扩展;可编程; 语法突显;自动完成;自动缩进;类IDE特性等;
选一个强大的编辑器,sublime,好好学习,设法扩展,提高生产率;
17 源码控制
源码控制系统追踪你在源码和文档中做出的每一项改动;
gitlab,github等;
18 调试
调试就是解决问题,要修正问题,不要发出任何指责;
不要恐慌;
要设法找出问题的根源,不要只是问题的特定表现;
从何处开始:搜集比最初给你的数据更多,要强硬测试边界条件;
让数据可视化,看看操作的数据;
橡皮鸭:找出问题有用的方式,向别人解释它,解释时明确陈述你在检查代码的事情,可能突然获得对问题的新洞见;
消除过程:无论bug处于什么阶段,归于谁,都要先消除你的代码中的bug;
当你抱怨时,不如沉下心仔细阅读技术文档,或者从它的周围找找线索;
变更永远是触发问题的导火索,无论直接还是间接;
你感到吃惊的程度与你正在运行的代码中的信任和信心成正比,充分测试就不会慌;
不要假定,要证明;
19 文本操纵
文本操纵工具,脚本语言,perl;
20 代码生成器
编写能编写的代码,主动、被动代码生成器只运行一次生成结果、每次需要结果时被使用;
————————————————
版权声明:本文为CSDN博主「匿名玩家-V」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012605629/article/details/104664403

posted @   ME社长  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示