軒轅鍾書对《代码整洁之道》的笔记(2)

軒轅鍾書
軒轅鍾書 (live more seriously within)

读过 代码整洁之道

代码整洁之道
  • 书名: 代码整洁之道
  • 作者: [美]Robert C. Martin
  • 页数: 388
  • 出版社: 人民邮电出版社
  • 出版年: 2010-1-1
  • 第1页

    代码逻辑应当直截了当,叫缺陷难以隐藏;尽量减少依赖关系,使之便于维护;依据某种分层战略完善错误处理代码;性能调至最优,省得引诱别人做没规矩的优化,搞出一堆混乱来。整洁的代码只做好一件事。

    整洁的代码总是看起来像是某位特别在意它的人写的。几乎没有改进的余地。

    能通过所有测试;
    没有重复代码;
    体现系统中的全部设计理念;
    包括尽量少的实体,比如类、方法、函数等。
    2019-07-15 13:22:35 回应
  • 第1页

    长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。

    代码读得越多,眼中就越没有前缀。最终,前缀变作了不入法眼的废料,变作了旧代码的标志物。

    聪明程序员和专业程序员之间的区别在于,专业程序员了解,明确是王道。专业程序员善用其能,编写其他人能理解的代码。

    可以考虑将相应的构造器设置为private,强制使用这种命名手段。

    对于那些会用到你代码的程序员,一以贯之的命名法简直就是天降福音。

    函数也不该有100行那么长,20行封顶最佳。

    这也意味着函数不应该大到足以容纳嵌套结构。所以,函数的缩进层级不该多于一层或两层。当然,这样的函数易于阅读和理解。

    函数应该做一件事。做好这件事。只做这一件事。

    单一权责原则(Single Responsibility Principle[7], SRP),因为有好几个修改它的理由。

    违反了开放闭合原则(Open Closed Principle[8], OCP),因为每当添加新类型时,就必须修改之。

    有三个参数的函数要比二元函数难懂得多。排序、琢磨、忽略的问题都会加倍体现。建议你在写三元函数前一定要想清楚。

    如果函数看来需要两个、三个或三个以上参数,就说明其中一些参数应该封装为类了。例如,下面两个声明的差别:

    这样的重复还是会导致问题,因为代码因此而臃肿,且当算法改变时需要修改4处地方。而且也会增加4次放过错误的可能性。

    自子程序发明以来,软件开发领域的所有创新都是在不断尝试从源代码中消灭重复。

    代码在变动,在演化。从这里移到那里。彼此分离、重造又合到一处。很不幸,注释并不总是随之变动——不能总是跟着走。

    唯一真正好的注释是你想办法不去写的注释。

    无论TODO的目的如何,它都不是在系统中留下糟糕的代码的借口。

    当有人查看底层代码实现时,我们希望他们为其整洁、一致及所感知到的对细节的关注而震惊。

    过程式代码(使用数据结构的代码)便于在不改动既有数据结构的前提下添加新函数。面向对象代码便于在不改动既有函数的前提下添加新类。

    最为精练的数据结构,是一个只有公共变量、没有函数的类。

    F.I.R.S.T.

    单元测试应该恰好在使其通过的生产代码之前编写。

    类应当对扩展开放,对修改封闭。

    DIP认为类应当依赖于抽象而不是依赖于具体细节。

    控制反转将第二权责从对象中拿出来,转移到另一个专注于此的对象中,从而遵循了单一权责原则。

    运行所有测试; 不可重复; 表达了程序员的意图; 尽可能减少类和方法的数量; 以上规则按其重要程度排列。

    在重构过程中,可以应用有关优秀软件设计的一切知识。提升内聚性,降低耦合度,切分关注面,模块化系统性关注面,缩小函数和类的尺寸,选用更好的名称,

    消除重复,保证表达力,尽可能减少类和方法的数量。 12.4 不可重复 重复是拥有良好设计系统的大敌。

    重复是拥有良好设计系统的大敌。

    小规模复用”可大量降低系统复杂性。要想实现大规模复用,必须理解如何实现小规模复用。

    软件项目的主要成本在于长期维护。为了在修改时尽量降低出现缺陷的可能性,很有必要理解系统是做什么的。

    建议:编写有潜力曝露问题的测试,在不同的编程配置、系统配置和负载条件下频繁运行。

    要编写整洁代码,必须先写肮脏代码,然后再清理它。

    多数新手程序员(就像多数小学生一样)没有特别认真地遵循这个建议。他们相信,首要任务是写出能工作的程序。只要程序“能工作”,就转移到下一个任务上,而那个“能工作”的程序就留在了最后那个所谓“能工作”的状态。多数老手程序员都知道,这是一种自毁行为。

    没什么能比糟糕的代码给开发项目带来更深远和长期的损害了。

    这些参数的默认值在Argument类的顶部指定。

    2019-08-04 23:10:24 回应

軒轅鍾書的其他笔记  · · · · · ·  ( 全部431条 )

智能商业
1
高潜
1
快速阅读术
1
OKR工作法
1
OKR:源于英特尔和谷歌的目标管理利器
1
程序员面试金典(第5版)
3
素书
1
奈飞文化手册
1
社群营销实战手册
1
AI·未来
1
Time Traps
1
The Power of Less
1
好好说话2
1
美团机器学习实践
2
成为技术领导者
1
领导梯队:全面打造领导力驱动型公司(原书第2版)
1
互联网广告的市场设计(全彩)
2
学会提问
2
这难得的世间
1
格鲁夫给经理人的第一课
1
搜索引擎广告的机制设计理论与实践
1
零秒工作
1
发现工作力
1
清华北大MBA成功申请一本通
1
如何戒掉坏习惯
1
请停止无效社交
1
关键对话:如何高效能沟通(原书第2版)(珍藏版)
1
原则
1
极简主义
1
少做一点不会死
1
知识变现
1
特朗普的成功之道
2
怦然心動的人生整理魔法
1
增长黑客
1
高效能人士的执行4原则
1
精益数据分析
1
简约至上
1
民主十問
1
深度学习
1
把生命浪费在美好的事物上
1
西方文明讲演录
4
超级学霸:受用终身的速效学习法
1
疯传:让你的产品、思想、行为像病毒一样入侵(全新修订版)
2
史蒂夫·乔布斯传(修订版)
1
三重专注力:如何提升互联网一代最稀缺的能力
2
西方文明讲演录
1
精益创业
1
教育的目的
1
投资最重要的事
3
人工智能
2
你的生命有什么可能
1
深度工作
1
全力以赴
1
统计自然语言处理(第2版)
2
超效率手册
1
少有人走的路
1
刻意练习
1
最强大脑
1
精力管理
5
人体信息图
1
全球通史
1
人是如何学习的
1
泛若不系之舟
1
李光耀论中国与世界
1
思考,快与慢
1
文明的冲突与世界秩序的重建
1
整理的艺术2:时间是整理出来的
1
小道理:分寸之间
5
谷歌和亚马逊如何做产品
1
大宪章
1
R语言与数据分析实战
1
我们为什么会犯错?
1
面向机器智能的TensorFlow实践
1
你的灯亮着吗?
1
精进
6
斯坦福大学创业成长课
9
岁月凶猛
5
郎咸平说:你的投资机会在哪里
1
褚时健
1
演讲之禅(原书第2版)
1
The Power of Habit
5
十天突破新托福Essays
1
Word Study and English Grammar a Primer of Information about Words, Their Relations and Their Uses
1
用所有的存在与世界相会
1
Mini Habits
1
把时间当作朋友(第3版)
1
我们这个时代的怕和爱
2
我是即将来到的日子
7
吾意独怜才
1
谁“偷”走了你的好睡眠
1
人生的84000种可能
1
在对的时间做对的事
1
小家,越住越大
3
自我发现与重塑
13
15 Secrets Successful People Know About Time Management
1
参与感
1
卓有成效的管理者
6
读在大好时光
2
The Time Trap
5
Speed Reading for Business
1
刘强东自述
2
Leading Change
5
重新定义公司
3
时间投资法
1
如何阅读一本书
1
怎样读书
1
必然
1
日常生活中的思维导图
2
你一年的8760小时
4
打造高绩效团队
3
如何有效阅读一本书
2
智识分子
4
软技能
2
时间管理
6
学问与人生
1
断舍离
1
创新大师
1
用户体验的要素
1
打回原形
3
怎样学习普通话
1
18 Minutes
1
洪昭光健康忠告
2
学术与政治
2
毛姆读书随笔
1
Oracle Bones
3
回锅肉和香菇菜心的语言等级
1
数据科学实战
1
活着活着就老了
1
金蔷薇
1
打造Facebook
1
Lean In
1
哈佛商学院最受欢迎的领导课
1
阅读的女人危险
1
历史在你我身边
1
每一个优秀的人,都有一段沉默的时光
4
痛并快乐着
1
小强升职记
1
风雨独立路
2
难忘的书与人
1
如何高效学习
6
战胜拖延症
1
从来就没有救世主
2
乌合之众
2
The Speed Reading Book
1
忍不住的“关怀”
2
贫穷的本质
2
10天搞定TOEFL作文
6
中国化的日本
1
不要因为走得太远而忘记为什么出发
1
The Willpower Instinct
4
谈修养
1
给你爱的人以自由
1
浅薄
5
暗时间
1
拖延心理学
1
新托福考试完全攻略
6
奋斗现场
7
笑谈大先生
2
娱乐至死
2
人生十论
3
与梦平行
1
杠杆时间术
1
20个月赚130亿
3
冷浪漫
4
沉默的大多数
2
约翰·克利斯朵夫(全四册)
6
一个村庄里的中国
3
此生未完成
1
上学记
5
理想的下午
2
国际音标自学手册
1
一网情深
2
个性化
1
冯仑如是说
1
比尔·盖茨全传
1
抓住细节看人心全集
1
思考致富
2
忙就忙到点子上
1
左右我们生活的28条潜规则
1
唐骏可复制的成功
1
一分钟的价值
1
人性的弱点
1
时间管理
1
35岁前要具备的50个做人智慧
1
九型人格
1
宽宽信箱与出埃及记
3
民主的细节
5
English Synonyms and Antonyms
1
Common Sense
1
巨流河
1
拆掉思维里的墙
7
佛祖在一号线
7
自由在高处
7
一问一世界
1
先斟满自己的杯子
1
送你一颗子弹
3
局外人
1
孤鹜落霞
6
野蛮生长
1
摘取梦想的启明星
3
希望长着翅膀
3
生而为赢
3
罗密欧与朱丽叶
10
美国名校毕业演说集萃
8
拉丁语基础
1
哈姆莱特 罗密欧与朱丽叶
1
杜甫诗选
1
英语散文精选读本
1
每天懂点好玩心理学
1
读经商之道悟财富人生
1
山海经
1