貨物崇拜程式設計
貨物崇拜程式設計(英語:Cargo Cult Programming)是一種電腦程式設計中的反模式,其特徵為不明就裏地、儀式性地使用程式碼或程式架構。貨物崇拜程式設計通常是程式設計師既沒理解他要解決的程式錯誤、也沒理解表面上的解決方案的典型表現[1]。
這個名詞常指不熟練的或沒經驗的程式設計師從某處拷貝程式碼到另一處,卻並未了解其程式碼是如何工作的,或者不清楚在新的地方是否需要這段程式碼。也可以指不正確或過分地應用設計模式、程式碼風格或程式設計方法,卻不清楚其原理。貨物崇拜程式設計也可以指對設計模式的盲目崇拜:盲目地使用設計模式,卻不理解特定設計模式背後的原則。
語源
貨物崇拜一詞指二戰期間太平洋某些原住民社會中產生的信仰。他們會建造模仿飛機形狀的模型和形似飛機跑道的設施,期待能夠召喚飛機,像戰爭時代一樣給他們帶來物資。[2][3]
在軟件開發的語境中使用貨物崇拜一詞,可能源自物理學家理查德·費曼所提出的「貨物崇拜科學」。[3][4]
貨物崇拜軟件工程
「貨物崇拜軟件工程」(Cargo Cult Software Engineering)是一個與貨物崇拜程式設計相關的概念。[5]:23-26這個概念指盲目模仿成功的軟件開發團體的表面現象,例如機械套用軟件開發過程卻不理解其中的理由;或者因為一些成功的軟件專案的開發團體出於熱忱和激情而有較多無報酬的加班,而將無報酬加班當作成功的原因。
提出這一概念的史蒂夫·麥克康奈爾(Steve McConnell)認為,決定專案成功與否的根本條件是能力,而不是表面上的方法;他進一步指出,機械模仿成功者表象的「東施效顰的組織」是貨物崇拜軟件工程的成因。[3]
參考來源
- ^ Raymond, Eric S. The New Hacker's Dictionary. MIT Press. 1996. ISBN 0-262-68092-0.
- ^ Bezroukov, Nikolai. Cargo Cult Programming article. Softpanorama (slightly skeptical) Open Source Software Education Society. [March 25, 2008]. (原始內容存檔於2021-01-26).
- ^ 3.0 3.1 3.2 Cargo Cult Software Engineering. IEEE軟件. March–April 2000 [May 24, 2008]. (原始內容存檔於2009-02-05).
- ^ Definition of cargo cult programming. Jargon File at jargon.net. [March 25, 2008]. (原始內容存檔於2020-11-12).
- ^ McConnell, Steve. Professional Software Development. Addison-Wesley. 2003 [2019-04-05]. ISBN 978-0-321-19367-4. (原始內容存檔於2019-08-26).