货物崇拜编程和巧合式编程

简介: 这周学到了两个编程领域的词语:货物崇拜编程 和 巧合式编程。

这周学到了两个编程领域的词语:货物崇拜编程巧合式编程

先说一下,这两个词语都是贬义词,需要开发者引以为戒。

一、货物崇拜编程

在了解「货物崇拜编程」之前,需要知道「货物崇拜」这个词语的来源。

货物崇拜的英文是 Cargo Cults,又译货物运动。

最为知名的货物崇拜,是于第二次世界大战太平洋战争时,美军于太平洋的美拉尼西亚岛建立临时基地。当时岛上的土著看见美军于「大铁船」(军舰)内出来,觉得十分惊讶。此外他们也看到有一些「大铁鸟」(军用飞机)运送穿着美军军服的人。这些土著看见这种情况感到很惊讶,并觉得这些「大铁船」及「大铁鸟」十分厉害。加上美军也提供部分物资给土著,而这些物资对土著来说十分有用,结果令这些土著将美军当作神。
第二次世界大战完结后,美军离开美拉尼西亚岛,只留下一些美军军服及一些货物。这些土著便认为这些货物具有神奇力量,又相信「神」(美军)他日会回来,带来更多货物,使他们展开一个幸福新时代。但是美军当然一直也再没有回来,因此这些土著便自己发展出一套敬拜仪式,崇拜美军军服以及货物。该宗教的表现形式是土著会穿着美军军服升起美国国旗,图腾则是木刻的飞机。一般把这种新的宗教被称为「约翰布鲁姆教」。

「货物崇拜编程」就是「货物崇拜」的衍生词。

货物崇拜编程通常是一个程序员既没理解他要解决的 bug,也没理解表面上的解决方案的典型表现。 这个名词有时也指不熟练的或没经验的程序员从某处拷贝代码到另一处,却不太清楚其代码是如何工作的,或者不清楚在新的地方是否需要这段代码。也可以指不正确或过份的应用设计模式,代码风格或编程方法,却对其原理不明就里。

🤔 如何避免货物崇拜编程?

1、培养责任感,对你写的每一行代码负责

如果你充满了责任感,你就会对你写的每一行代码保持警惕,即便是从其他地方 Copy 的代码,你也会想方设法的去了解它的来龙去脉,会带来什么潜在的问题,以及如何避免。

责任感带动你进行思考和怀疑,进而开展学习,最后你就不会盲从。

2、不要止步于会使用

任何一门技术都是为了解决问题而生,如果你想成为优秀的程序员,必须要深入的了解技术背后的原理和它解决问题的思路。这一点绝不能偷懒。

3、邀请高手审核你的代码

可以请团队中,有经验的同事,对你的代码进行审核,如果你能架得住对方的审核以及提问,那么说明你对你写的代码还是很了解的。

二、巧合式编程

巧合式编程就是写了一段代码,发现它可以正常运行,以为就万事大吉了,但是突然有一天运行在别的环境中,就直接出问题了,而且你还不知道为什么出问题。这个就是典型的巧合式编程。

🤔 如何避免巧合式编程?

1、先有设计,然后再产出,不要想到一处写一处;

2、你能给任何人解释清楚你写的代码;

3、尽量不要使用自己并不理解的技术进行编程,如果你都不确定它为什么能用,那么你也不会知道它为什么出错;

4、只依赖可靠的东西,不要依赖假设。如果你不知道某件事是否可靠,就要做最坏的打算;

5、不要只测试代码,还要测试假设。不要猜,去实际试一下,写一个断言来测试假设。

三、写在最后

编程应该深思熟虑。

相关文章
|
6天前
|
人工智能 机器人 测试技术
【C++面向对象】C++飞机购票订票系统(源码+说明)【独一无二】
【C++面向对象】C++飞机购票订票系统(源码+说明)【独一无二】
|
6天前
|
SQL 前端开发 Java
五邑大学餐厅网络点餐系统设计与实现(包含完整源码详细开发过程)
五邑大学餐厅网络点餐系统设计与实现(包含完整源码详细开发过程)
|
10月前
|
Java 编译器 索引
Java语法糖:甜化你的编程体验
Java语法糖:甜化你的编程体验
Java语法糖:甜化你的编程体验
|
12月前
|
存储 SQL 关系型数据库
C语言实验小项目实例源码大全订票信息管理系统贪吃蛇图书商品管理网络通信等
C语言实验小项目实例源码大全订票信息管理系统贪吃蛇图书商品管理网络通信等
85 0
|
前端开发 JavaScript 程序员
程序员祝福圣诞快乐的方式(内涵完整代码)
程序员祝福圣诞快乐的方式(内涵完整代码)
139 0
|
Java 领域建模
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(1)
|
Java 测试技术
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
java面向对象思维程序设计开发以及案例 -电梯运行问题对象分析与程序设计(2)
|
数据安全/隐私保护 C++
C++面向对象课程设计报告_快递系统
面向对象程序课程设计 题目:快件管理系统 需求分析 该系统为两种角色的用户提供服务,一种是代收点服务人员,一种是收件人。代收点服务人员根据账号、密码登录系统。收件人无需登录即可使用系统。代收点服务人员可将快件信息录入系统,快件信息包括快递单号、快递公司、收件人、收件人联系电话、收件人地址、邮编、寄件人、寄件人联系电话、寄件...
126 0
C++面向对象课程设计报告_快递系统
|
前端开发 JavaScript PHP
【译】类比餐厅桌前就餐来解释前端和后端
如果你曾去过坐式餐厅,那么你就能理解web开发中前端和后端的区别。
【译】类比餐厅桌前就餐来解释前端和后端