新語

2006 年 11 月 2 日

新語

1:新字、用法或表達方式。
2:精神病患者創造的無意義字詞。

-- Merriam-Webster

如果您讀過我許多文章,您很快就會發現我是一個強迫性的新語創造者。我總是試圖想出新字和新詞組,事實上,這個部落格就是圍繞這個習慣所設計的。

我這麼做是因為我試圖撰寫的內容,大部分都是關於軟體設計這個棘手的議題,我們的詞彙有限且經常令人困惑。當我看到鮮為人知或經常被誤解的概念時,我試圖為它們命名,以便更容易討論它們。開發領域特定的術語,通常會被批評為排他性的,但正如凱西·塞拉 所指出的,這種術語使溝通更有效率且更有趣。

新語創造是我與更廣泛的模式運動所共有的。從一開始,模式社群就投入大量精力,找出最佳方式來命名他們所描述的模式。

命名模式會立即增加我們的設計詞彙。它讓我們能夠在更高的抽象層級進行設計。擁有模式詞彙讓我們能夠在文件和甚至與自己討論模式時,與同事討論模式。這使得思考設計、傳達設計及其權衡取捨變得更容易。找到好名稱一直是開發我們的目錄中最困難的部分之一。

--四人幫

當然,嘗試建立這種詞彙也有缺點。它確實成為一種術語,雖然有助於了解它的人進行溝通,但也排除了不了解它的人。總的來說,我覺得好處勝過壞處。

選擇好的字詞,無論是針對我較為永久的模式,還是僅針對這些部落格文章,都是一項艱難的任務。我花了很多時間思考字詞的運作方式,尋找一個令人回味的字詞,不會與現有術語混淆,而且相當簡短(理想情況下朗朗上口)。

創造全新術語會引起注意,但其實我寧願不這麼做。如果已有現有術語可用,我比較喜歡使用它。畢竟這樣比較省力。然後我會將它與常見用法做平衡,看看它與我正在討論的概念有多麼契合。有時候這會導致改變,例如我抗拒使用控制反轉來描述依賴性注入的情況。我總是覺得這是一個艱難的決定——如果現有術語很契合,最好還是使用它,但現有術語通常意義模糊,我需要更精確的東西。

有人指控我太快創造新詞,這或許反映出我偏好不熟悉但精確的術語,勝過眾所周知但模糊的語言。

當然,這項限制在於我或任何一群模式撰寫者都無法標準化每個人的詞彙。我使用的術語通常不會獲得最大的流通量。這可以理解,但不會阻止我。我發現如果沒有連貫的詞彙,我就無法寫得清楚,即使該詞彙僅對我而言連貫。因此我根本的原因是自私的,我發展出一套連貫的詞彙,因為需要一套。

我覺得很奇怪,你偶爾會遇到指控,說這是為了某種物質利益而做的。我從未見過有人靠創造術語賺錢,否則麗貝卡、喬許和我會靠POJO在某個島嶼上閒晃,而傑西·詹姆斯·加勒特會靠Ajax買下一座島嶼。事實上,大多數使用該術語的人可能不知道誰想出 POJO,而這對我來說沒關係。

在我成為軟體撰寫員之前,我就做了很多創造新詞的事,儘管我早期的活動相當不同,而且是許多人都在做的事。這是在使用領域建模來建立通用語言,以便在開發人員和客戶之間建立溝通。這是一項不同的活動,受眾範圍較窄。許多專案都會這麼做,即使那些沒有在程式碼中建立語言來描述領域的人也是如此,即使它沒有與非極客分享。

儘管有這些差異,這兩種活動都希望簡潔而精確地說明某個領域。在這兩種情況下,我都會創造新詞,因為我發現這些詞是有用的工具,能極大地幫助我理解一個領域。我公開使用它們,因為我相信幫助我的工具對其他人來說也有用。