新词

2006年11月2日

新词

1:新词、用法或表达方式。
2:精神病患者创造的毫无意义的词。

-- 韦氏词典

如果你读过我写的很多东西,你很快就会注意到我是一个强迫性的新词创造者。我一直在寻找新的词语和短语,事实上,这个博客就是围绕着这个习惯设计的。

我这样做是因为我试图写的大部分内容都是关于软件设计的棘手主题,而我们在这一领域的词汇量有限,而且常常令人困惑。当我看到一些鲜为人知或经常被误解的概念时,我会试着给它们起个名字,这样就更容易谈论它们。开发特定领域的术语常常被批评为具有排他性,但正如 Kathy Sierra 指出的那样,这样的术语会使沟通更加高效和有趣。

创造新词是我与更广泛的模式运动所共有的一点。从一开始,模式社区就投入了大量的精力来研究如何最好地命名他们所描述的模式。

为模式命名会立即增加我们的设计词汇量。它让我们可以在更高的抽象层次上进行设计。拥有模式的词汇表让我们可以与同事、在文档中,甚至与我们自己谈论它们。它使我们更容易思考设计,并将其及其权衡取舍传达给他人。找到好的名字一直是开发我们目录中最困难的部分之一。

-- “四人帮”

当然,尝试创建这种词汇表也有不利之处。它确实会成为一种行话,虽然它有助于那些了解它的人进行交流,但也排斥了那些不了解它的人。总的来说,我认为利大于弊。

选择合适的词语,无论是对我更持久的模式还是仅仅对这些博客条目来说,都是一项艰巨的任务。我花了大量时间思考词语如何发挥作用,寻找一个能够唤起共鸣的名字,不会与现有术语混淆,而且要 reasonably 短(最好是朗朗上口)。

创造全新的术语最能引起人们的注意,但这实际上是我不愿意做的事情。如果有现成的术语,我更愿意使用它。毕竟这样更省力。然后,我会将其与常见的用法进行比较,看看它与我所谈论的概念的契合程度。有时这会导致做出改变,例如,我拒绝使用 控制反转 来描述依赖注入中发生的事情。我总是发现这是一个艰难的决定——如果合适的话,最好使用现有的术语,但现有的术语往往含义模糊,我需要更清晰的表达。

我被指责为过快地创造新词,这也许反映了我更喜欢陌生但精确的术语,而不是众所周知但模糊的语言。

当然,这样做的局限性在于,我或任何模式编写者群体都无法标准化每个人的词汇表。我使用的术语往往不是最常用的。这是可以理解的,但这并不能阻止我。我发现,如果没有一个一致的词汇表,我就无法清晰地写作,即使这个词汇表只对我自己一致。所以我的根本原因是自私的,我开发一个一致的词汇表是因为我需要一个。

我觉得奇怪的是,偶尔会有人指责这样做是为了某种物质利益。我从未见过有人通过创造术语赚钱,否则 Rebecca、Josh 和我就会因为 POJO 而在岛上无所事事,Jesse James Garrett 也会因为 Ajax 而买下一座岛。事实上,大多数使用这个词的人可能都不知道是谁想出了 POJO,我对此感到很满意。

在我成为软件作家之前,我就经常创造新词,尽管我早期的活动与现在大不相同,而且是很多人都在做的事情。这就是使用领域建模来构建 通用语言,以便在开发人员和他们的客户之间建立沟通。这是一项不同的活动,受众要狭窄得多。许多项目都在这样做,即使那些没有在代码中创建描述领域的语言的项目,即使它没有与非极客共享。

尽管存在这些差异,但这两项活动都希望能够简洁而精确地描述某个领域。无论在哪种情况下,我都会创造新词,因为我发现这些词是有用的工具,可以极大地帮助我理解一个领域。我公开使用它们是因为我相信,对我有帮助的工具对其他人也有用。