货物崇拜编程

货物崇拜编程(英语:Cargo Cult Programming)是一种计算机程序设计中的反模式,其特征为不明就里地、仪式性地使用代码或程序架构。货物崇拜编程通常是程序员既没理解他要解决的程式错误、也没理解表面上的解决方案的典型表现[1]

这个名词常指不熟练的或没经验的程序员从某处拷贝代码到另一处,却并未了解其代码是如何工作的,或者不清楚在新的地方是否需要这段代码。也可以指不正确或过分地应用设计模式、代码风格或编程方法,却不清楚其原理。货物崇拜编程也可以指对设计模式的盲目崇拜:盲目地使用设计模式,却不理解特定设计模式背后的原则。

语源

货物崇拜一词指二战期间太平洋某些原住民社会中产生的信仰。他们会建造模仿飞机形状的模型和形似飞机跑道的设施,期待能够召唤飞机,像战争时代一样给他们带来物资。[2][3]

在软件开发的语境中使用货物崇拜一词,可能源自物理学家理查德·费曼所提出的“货物崇拜科学”。[3][4]

货物崇拜软件工程

“货物崇拜软件工程”(Cargo Cult Software Engineering)是一个与货物崇拜编程相关的概念。[5]:23-26这个概念指盲目模仿成功的软件开发团体的表面现象,例如机械套用软件开发过程却不理解其中的理由;或者因为一些成功的软件项目的开发团体出于热忱和激情而有较多无报酬的加班,而将无报酬加班当作成功的原因。

提出这一概念的史蒂夫·麦克康奈尔(Steve McConnell)认为,决定项目成功与否的根本条件是能力,而不是表面上的方法;他进一步指出,机械模仿成功者表象的“东施效颦的组织”是货物崇拜软件工程的成因。[3]

参考来源

  1. ^ Raymond, Eric S. The New Hacker's Dictionary. MIT Press. 1996. ISBN 0-262-68092-0. 
  2. ^ Bezroukov, Nikolai. Cargo Cult Programming article. Softpanorama (slightly skeptical) Open Source Software Education Society. [March 25, 2008]. (原始内容存档于2021-01-26). 
  3. ^ 3.0 3.1 3.2 Cargo Cult Software Engineering. IEEE软件. March–April 2000 [May 24, 2008]. (原始内容存档于2009-02-05). 
  4. ^ Definition of cargo cult programming. Jargon File at jargon.net. [March 25, 2008]. (原始内容存档于2020-11-12). 
  5. ^ McConnell, Steve. Professional Software Development. Addison-Wesley. 2003 [2019-04-05]. ISBN 978-0-321-19367-4. (原始内容存档于2019-08-26). 

参见