義大利麵與程式碼
各種色香味俱全的義大利麵如圖所示,尤其是左下角的“千層麵”好吃極了 :D...
四種美味的義大利麵
言歸正傳,儘管義大利麵灰常好吃,但是“義大利麵式的程式碼”卻讓程式設計師吃盡了苦頭(程式設計師,你懂的)。正如種類繁多的義大利麵一樣,“義大利麵式的程式碼”更是玲琅滿目、五花八門!
既然人們喜歡拿義大利麵與程式碼作比較(又稱隱喻),想必二者多少有些相似之處。
那就先從美味的義大利麵說起吧,如圖所示,色香味俱全的義大利是最終狀態,是廚師精心烹調的結果。而在烹調之前,它們只是麵粉、肉末、番茄醬、食鹽等等一系列主輔料,是廚師根據顧客的要求把它們按比例混合、加工成為各種口味的義大利麵。
既然義大利麵做好了,那麼“義大利麵式的程式碼”又是如何加工出來的呢?作為程式設計師,俺非常清楚這個加工過程:首先,客戶將功能需求以口頭或書面形式告知客戶經理;接著,經客戶經理對需求進行簡單分析(分解為輸入和輸出),並將分析結果告知程式設計師;然後,程式設計師根據分析結果進行“填空”,即實現從輸入轉換到輸出之間的空白;最後,層層提交給客戶驗收功能。若幸運的話(驗收通過),“義大利麵式的程式碼”就算大功告成了。若更幸運的話(需求變更),程式設計師很快就能品嚐到親手製作的“美味佳餚”了!
為什麼義大利麵如此誘人,而“義大利麵式的程式碼”卻慘不忍睹?!——請程式設計師仔細回憶“填空”的過程,我們把程式語言作為被加工的原料,嘗試用語言提供的各種基本元素及結構來“烹調”,儘管我們最終實現了使用者需求,而得到的卻是一坨“義大利麵式的程式碼”。其中的問題在於,我們用“元素”合成了“義大利麵”。而更恰當的做法則是,先用“元素”合成“原料”,然後將“原料”混合、加工成為“義大利麵”。這樣,只需適當調整原料的配比及加工工藝即可烹調出多種口味的“義大利麵”。簡單地說,“元素”即程式語言,“義大利麵”即客戶需求,而缺失的“原料”不僅包括領域知識,而且還有對程式的設計時及執行時概念模型的設計和認知!
美味的義大利麵本該盛在餐盤裡供人品嚐,而不應出現在程式碼中!
相關文章
- 驚了!goto 語句讓 Go 程式碼變成義大利麵條嗎?Go
- 無伺服器可能導致程式碼進入分散式義大利麵條糨糊2.0新時代 - TechRepublic伺服器分散式
- js程式碼與html程式碼分離示例JSHTML
- 企業中的低程式碼與無程式碼
- 前端程式碼安全與混淆前端
- 讓咖啡與程式碼相伴
- wcf 配置與程式碼建立
- ArrayList原始碼剖析與程式碼實測原始碼
- 低程式碼與專業程式碼有什麼區別?
- 程式碼與質量的思考與隨筆
- PHP程式碼的優與劣PHP
- vysor原理與程式碼實現
- GDB程式碼除錯與使用除錯
- 控制程式碼與指標指標
- PMD使用與程式碼質量
- 與browser相關的程式碼
- TaxoRec部署與程式碼閱讀
- Base64編碼與解碼程式碼例項
- MSIL入門(一)C#程式碼與IL程式碼對比C#
- 低程式碼與無程式碼真正的區別是什麼
- 一文了解低程式碼與無程式碼:異同點
- 重複程式碼(克隆程式碼)的幾個概念與型別型別
- HanLP程式碼與詞典分離方案與流程HanLP
- AndroidWebView與JavaScript程式碼互動AndroidWebViewJavaScript
- Java程式碼塊與Java繼承Java繼承
- 程式碼大全 閱讀與提問
- 程式設計入門之字元編碼與亂碼程式設計字元
- C 語言高效程式設計與程式碼優化程式設計優化
- 編寫高效的C程式與C程式碼優化C程式優化
- 最佳Vue開發實戰系列(一):設計一個回味無窮的高擴充套件性路由,比義大利麵香【詳解+實踐貼上程式碼】Vue套件路由
- Vue同構(二): 路由與程式碼分割Vue路由
- Storm的wordcount程式碼編寫與分析ORM
- java static 與 static靜態程式碼塊Java
- UIWebView程式碼注入時機與姿勢UIWebView
- 油膩程式碼大叔與蝴蝶效應
- SVN程式碼管理 備份與還原
- Javascript中的Trait與程式碼重用JavaScriptAI
- CSS程式碼重構與優化之路CSS優化