写点什么

书评:实现模式

  • 2007-11-08
  • 本文字数:1878 字

    阅读完需:约 6 分钟

Kent Beck 的新书《实现模式》是一本关于如何撰写 Java 代码的书。本书中的模式,是基于 Kent 对现存代码的阅读以及他自己的编程习惯而形成的。这些模式来自他早年使用 Smalltalk 模式通过代码与其他开发人员进行沟通的过程。它们的级别相对设计模式较低,与 Larman 提出的 GRASP 模式处于同一粒度。本书中的模式试图为如何撰写大家都能看得懂的代码提供一个清晰明确的视角,并告诉你这些代码如何为人的需要和降低成本的需求提供保障。

编程的理论

当然,什么样的代码才是好的代码——更不用说伟大的代码了——这一点所有的开发人员都无法达成一致意见。Kent 提出了他的编程理论作为辨识代码的基础。 作为介绍性章节,第一章介绍了本书的目标,第二章对模式进行了阐述。在本书的第三章中,Kent 描述了在编程中两个具有横切面性质的关注点:价值观与原 则。

价值观是编程过程的统一支配性主题。当我工作状态尚佳的时候,我珍视与其他人沟通的重要性,去除我的代码中多余的复杂性,并保持开放的心态。这些价值观——沟通、简单和灵活——让我在编程时所做的每个决策都充满了丰富的色彩。 此处描述的原则不像上面的价值观那样普及和意义深远,不过每一项原则都被许多模式所表达。价值观,一般都是通用性非常强的,难以直接应用;模式虽可以直接 应用,却是针对特定情景的;原则在价值观和模式之间搭建了桥梁……在面对不确定性的时候,对原则的理解让我可以“做出一些补偿”来与我其他的实践保持一 致,而且结果也很不错。

Kent 接下来详细讨论了价值观和原则。本书中的模式都会回头参考到价值观和原则——它们可以帮助开发人员理解每个模式是如何帮助达成更大的目标的。

这些价值观是:

  1. 沟通(Communication)
  2. 简单(Simplicity)
  3. 灵活(Flexibility)

这些原则是:

  1. 局部效应(Local consequences)
  2. 最小化重复(Minimize repetition)
  3. 将逻辑与数据放在一起(Logic and Data together)
  4. 保持对称性(Symmetry)
  5. 声明式的表达式(Declarative Expression)
  6. 改变指数(Rate of Change)

本章接下来的一章,是关于激励——主要是经济激励——驱动软件开发的激励的。简而言之,我们把大部分的时间都耗费在了软件维护上面。变化的成本是下面这些因素的总和,依次是:理解代码、变更代码、测试代码,最终是发布代码。

模式

本书中的模式是以散文形式写就的,涵盖的内容从何时应该在类中创建一个数据字段开始,到判等方法(equality method),再到子类化过程,全部包括在内。这些模式被分类到不同的章节,包括:

  1. 类:关于如何创建类和接口的模式。
  2. 状态:关于数据的模式。
  3. 行为:关于驻留在类之内但并非必须如此的功能的模式
  4. 方法:关于类中不同类型方法的模式
  5. 集合:关于聚合数据的模式
  6. 框架:关于构建一个框架的不同方面考量的模式

下面是一些模式的例子:(Kent 表述它们的方式要比这些略述优雅得多)

  • 来自“类”模式:
    • 超类名称要简单:对命名这一编码行为,是要保持简洁和还是要保证表义性方面一直存在争论。Kent 讨论了如何为超类起一个好名字。
    • 子类名称要合格:对子类的命名会表述出其与超类之间的相似和差异之处。由于超类不会像子类那样被频繁引用,对子类的命名就不必考虑太多简洁的因素。
  • 来自“状态”模式:
    • 直接访问:形如 x=10 这样的表达式是非常清晰和简洁的。但是太多类似表达式会让代码变得凌乱。
    • 延迟初始化:如果初始化成本过高,有时推迟初始化的过程是很有用的。
  • 来自“方法”模式:
    • 组合方法(Composed method):方法中调用其他方法,而且这些被调用的方法基本上处于同样的抽象层次。
    • 判等方法(Equality method):为正确的相等方式一起定义 equals() 和 hashcode() 方法。

结语

Kent 以优雅简洁的方式为我们分享了他的经验(全书加附录共 156 页)。他并没有制定规则,而是给出了价值观、原则和经验之菁华(rules of thumb):

没有统一的法则。程序员需要思考、沟通和学习。这是敬业精神的一部分。

本书对于初级和高级开发者同样很有帮助——每个人都能获得不同的收获。刚进入软件开发领域的新人们能够通过当今最富才华开发人员之一的眼睛来看待开发工 作。其他有较多经验的人们可以反思他们获得成功的一些实践,通过聚焦于成功的原因,这些实践呈现出了不同的意义。最终,将价值观、原则(特别是价值观)和 软件开发捆绑在一起,让一切都变得不同了——当然是以一种非常好的方式。

查看英文原文: Book Review: Implementation Patterns


译者简介:郑柯,目前任职《程序员》杂志社高级编辑,有志于在中国的软件开发业界推广 Agile 的理念和方法论,笃信以人为本,关注 Ruby,关注敏捷,关注人。参与 InfoQ 中文站内容建设,请邮件至 china-editorial@infoq.com

2007-11-08 06:382620
用户头像

发布了 479 篇内容, 共 170.5 次阅读, 收获喜欢 52 次。

关注

评论

发布
暂无评论
发现更多内容

使用机器学习,轻松预测问题产品,低成本高效率解决产品质量监测需求

Altair RapidMiner

人工智能 数据分析 数据科学 altair RapidMiner

Kafka 可观测性最佳实践

观测云

kafka

安全、合规!华为云助力源康健加速医疗产业数智化转型

YG科技

达摩院发布八观气象大模型:精度达1小时1公里,率先落地新能源场景

吴脑的键客

人工智能 阿里巴巴

探索淘宝API:如何高效获取商品类目信息

代码忍者

鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙

少湖说

flutter 鸿蒙 HarmonyOS

1106AI快讯 | xAI API开放测试 | 腾讯混元模型发布 | ComfyCanvas简化绘画流程 | HelloMeme表情克隆技术 | Nvidia市值超苹果 | 谷歌沙特新AI中心

言寡意多

阿里云 EMAS携手开发者,共建更优质的HarmonyOS NEXT应用生态

移动研发平台EMAS

Context的典型使用场景

龙儿筝

鸿蒙

10.桥接模式设计思想

杨充

微博热搜榜数据抓取的详细攻略

幂简集成

微博

简述大前端技术栈的渲染原理

京东科技开发者

一文理解布隆过滤器和布谷鸟过滤器

京东科技开发者

在徐州工业职业技术学院,透见数智淮海的南秀北雄

脑极体

通信

实战指南:高效高并发批量采集1688商品详情接口

代码忍者

API 接口 pinduoduo API

产品经理应该是“全才”还是“专才”?

科技热闻

向量检索服务-应用场景

DashVector

人工智能 数据库 向量检索 大模型

AI对话魔法|Prompt Engineering 探索指南

京东科技开发者

鸿蒙Flutter实战:05-使用第三方插件

少湖说

flutter 鸿蒙 HarmonyOS

鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件

少湖说

flutter 鸿蒙 HarmonyOS

鸿蒙Flutter实战:07-混合开发

少湖说

flutter 鸿蒙 HarmonyOS

鸿蒙Flutter实战:08-如何调试代码

少湖说

flutter 鸿蒙 HarmonyOS

鸿蒙Flutter实战:10-常见问题集合

少湖说

flutter 鸿蒙 HarmonyOS

鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0

少湖说

flutter 鸿蒙 HarmonyOS

DApp开发定制:合约设计与源码搭建支持快速上线

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

书评:实现模式_Java_Amr Elssamadisy_InfoQ精选文章