对象健身操----Thought Works文集

本文分享了九条实用规则,旨在帮助开发者实现简洁、高效且易于维护的软件设计。这些规则涵盖了方法长度控制、避免使用else关键字、封装原生类型、减少对象交互等面向对象设计的核心原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       最近看到了一本非常值得阅读的书《软件开发沉思录--Thought Works 文集》, 13 篇美文荟萃软件开发精华,来自软件界思想领袖们的经验心得,为你开启敏捷开发之门。其中有一篇文章非 常经典,让我爱不释手。现在我把里面的部分思想摘录于此,以此来警戒自己。


九步迈向优秀软件设计:


面向对象编程一直在鼓励我们摆脱过程式代码的桎梏,帮助我们以累加的方式编写代码,并重用已有的组件。优秀设计背后的核心概念其实并不高深:内聚性、松耦、零重复、封装、可测试性、可读性以及单一职责。作者给出了一系列实践规则,让我们将良好的面向对象设计原则变得更加具体。


规则1 :方法只使用一级缩进


庞大的方法通常缺少内聚性。一个常见的原则是将方法的行数控制在5 行之类。每个方法都只关注一件事,而它们所在的泪也只做一件事。


规则2 :拒绝 else 关键字


层层嵌套的条件判断,连绵数页的case 语句。对于简单的条件判断,我们可以使用“卫语句”和“提前返回”替换它。


规则3 :封装所有的原生类型和字符串


规则4 :一行代码只有一个“ . ”运算符


一行包含了多个“. ”的代码,很难判断出一个行为的职责应该由哪个对象来承担。迪米特法则:只和身边的朋友交流。


规则5 :不要使用缩写

   我们总会在不自觉地在类名,方法名或者变量名中使用缩写。缩写会令人迷惑,也容易隐藏一些严重的问题。尽量保持类名和方法名称中只包含一到两个单词。


规则6 :保持实体对象简单清晰


   每个类的长度都不能超过50 行,每个包所包含的文件不超过 10 个。随着类变得越来越小,职责越来越少,加之包的大小也受限制,因此包中的泪越来越集中,它们能协调完成一个共同的目标。包和类一样,也应该是内聚的。


规则7 :如何类中的实例变量都不要超过两个


   大多数的类应该只负责处理单一的状态变量,有时也可以拥有两个状态变量。每当为类添加一个实例变量,就会立即降低类的内聚性。


规则8 :使用一流的集合


规则9 :不使用任何 Getter/Setter/Property


   这条规则通常被描述为:“讲述而不要询问(Tell, don't ask )”。

总结:能够帮助程序员获得面向对象程序设计的圣杯------- 数据封装。不要使用 else, 尽量简化条件判断逻辑,鼓励程序员适当使用多态。命名策略,鼓励程序员使用一致的,直接的命名标准,不要使用难以理解的缩写。


总之:就是想尽办法消除代码中的重复。我们每天都要面对复杂的问题,而我们的目标是:用简练的代码表达出简单而优美的抽象。


个人感觉:这些规则太不可思议了,完全打破了我们平时的思维编程习惯吗。给我的第一反应就是:我们能完全按照这些规则来做吗?在日常的软件开发中可行吗?能够完整遵守这些规则吗?可是作者最后说了这么一句:我们刚刚完成了一个超过100 000 行代码的系统,它严格遵守本文中提到的所有规则。参与这个项目的程序员全部都认真地遵守了上述规则。最终每个人都非常高兴地看到:如果努力地拥抱简单,那么开发过程会快乐得多。


拥抱简单,快乐编程,享受编程。

 

 


 

 


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值