義大利麵條式程式碼

給編輯的信
CROSSTALK,《國防軟體工程期刊》

提到「義大利麵條式程式碼盛宴」(「電腦社群」,CrossTalk,1992 年 4/5 月號)促使了這篇回應

幾乎每位軟體專業人士都聽過「義大利麵條式程式碼」這個詞,它帶有貶義,用來形容複雜、難以理解且無法維護的軟體。然而,許多人可能不知道完整的「軟體義大利麵理論」的其他兩個要素。

千層麵式程式碼用來描述結構簡單、易於理解且分層的軟體。千層麵式程式碼雖然結構化,但不幸的是它是單體的,不易修改。嘗試更改概念上很簡單的一層,但在實際操作中通常非常困難。

理想的軟體結構是組件小而鬆散耦合的結構;這種理想結構稱為義大利餃式程式碼。在義大利餃式程式碼中,每個組件或物件都是一個包含系統所需的「肉」或其他養分的包裝;任何組件都可以被修改或替換,而不會顯著影響其他組件。

我們需要超越對義大利麵條式程式碼的譴責,轉而積極鼓勵義大利餃式程式碼。

Raymond J. Rubey
SoftTech, Inc.

純文字版本

這篇是由 Luca Nanetti 投稿的

  • 純 Java 程式碼:zuppa di fagioli 程式碼(義大利文,意為「豆子湯」);
  • 包含 HTML、XML 等的網際網路應用程式,加上 Java 物件:pasta e fagioli 程式碼(義大利文,意為「加了麵的豆子湯」);
  • 糟糕的 OOP 程式設計——少數巨大且極度複雜的物件:canederli 程式碼(兩個用麵包、雞蛋、牛奶和肉製成的大型水煮球;非常好吃!)
  • 糟糕的 OOP 程式設計——大量非常非常小的物件混亂地互動:risotto 程式碼(義大利燉飯);
  • 單體式、非物件導向、非程序式、非結構化程式碼,但卻非常棒、非常好、非常出色,以至於它像一個明亮耀眼的黃色太陽般發光:polenta 程式碼。