转自:程序人生

在工作中,会遇到很多使用囧然不同风格的开发者,下面是小编所知道的一些,你还知道其它的吗?

散弹枪编程

这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 false 变成 true!”,当然依然出错,于是我们的程序员会这样:“好吧,那我就注释掉整个方法吧”,或是其它更为随意的处理方式,直到最后让这个调用成功。或是被旁边的某个程序员指出一个正确的方法。

如果我们把一个正规的程序员和一个撞大运的程序员放在一起做结对,那么,那个正规的程序可以马上变得发疯起来,并且,可以把正规的程序员的智商降到最低。两个撞大运的程序员不应该在一起做结对编程,这是因为他们破坏性的才能会造成的伤害会比只有一个还差。

撞大运编程

这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质和实际,但是可以让程序工作起来。

他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。

一旦出现问题,他们会用两条路:

1)停下来,理解一下程序,找到出错的原因。

2)使用散弹枪编程方式开始解决问题。

测试驱动开发(Test Driven Development)是一种可以用来拯救上百万的撞大运编程的程序员。于是,他们有了一个更为NB的借口:只要我的程序通过测试了,你还有什么话好说?别骂我,测试驱动开发是一个不错的事物,其主要是用来控制撞大运开发所带来的问题。

Cargo-Cult 编程

关于Cargo Cults 这个词儿来自二战期间的某些太平洋上小岛里的土著人。在战争期间,美国利用这些小岛作为太平洋战场上的补给站。他们在这些小岛上修建自己的飞机跑道以用来运输战争物资。而那些小岛上的土著人从来没有见过飞机,当他们看到飞机的时候,觉得相当的牛,可以为那些白人带来各种各样的物品和食物。当二战结束后,那些土著人仿照着修建了飞机跑道,并用竹子修建了塔台。然后就在那期望着有飞机为他们送来物品和食物。

Cargo Cult 编程是一种非常流行的编程方法,使用这种方法的程序员会学习其它编程高手的编程方法,虽然他们并不知道为什么高手们要那样做,但是他们觉得那样做可以让程序工作起来。举个例子,当时有大量的程序员在J2EE出现的第一年中过度地使用了EJBs和Entity Beans。

刻舟求剑编程

刻舟求剑是一个很流行的寓言了。这种风格的编程在程序员的圈子里是非常常见的。比如,有一天,你发现了一个空指会的异常,于是你到了产生空指针异常的地方,简单地放上一个判断: if (p != NULL)。

是的,这样的fix可以让你的程序工作起来,但你并没有真正地解决问题。你只不过是在你的船边记下了剑掉下去的位置,这样做只不过把问题隐藏起来,最终只会让你的程序的行为变得神出鬼没。你应该找到为什么指针会为空的原因,然后再解决这个问题。

设计模式驱动型编程

正如这种编程的名字所说的,这种编程风格使用大量的设计模式,在你的程序中,四处都是设计模式,你的代码到处都是Facade,Observer ,Strategy,Adapter,等等等等。于是,你的程序要处理的业务逻辑被这些设计模式打乱得无法阅读,最后,也不知道是业务需求重来,还是设计模式重要,总之,实际业务需求的程序逻辑被各种设计模式混乱得不堪入目。

侦探型编程

在解决一个Bug的时候,侦探型程序员会调查这个Bug的原因。然后,则调查引发这个BUG的原因的原因。再然后,其会分析修正代码后是否会导致其它代码失败的因果关系。再然后,他会使用文本搜索查找所有使用这个改动的代码,并继续查找更上一级的调用代码。最后,这个程序员会写下30个不同的情形的测试案例,就算这些测试案例和那个Bug没有什么关系,最最后,这个程序员有了足够多的信心,并且精确地修正了一个拼写错误。

与此同时,其它一个正常的程序修正了其它5个Bug。

屠宰式编程

使用这种风格的程序员,对重构代码有着一种难以控制的极端冲动。他们几乎会重构所有经手的代码。就算是在产品在Release的前夜,当他在修正几个拼写错误的bug同时,其会修改10个类,以及重构与这10个类有联系的另20个类,并且修改了代码的build脚本,以及5个部署描述符。

看完此文,你有什么想法或观点呢?欢迎在留言区留言评论。

各种流行的编程风格 你属于哪一种?相关推荐

  1. 各种囧然不同流行的编程风格

    在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗? 散弹枪编程这种编程风格是一种开发者使用非常随意的方式对待代码.嗯,这个方法调用出错了那么我会试着把传出的 ...

  2. [Javascript]编程风格

    作者: 阮一峰 日期: 2012年4月27日 Douglas Crockford是Javascript权威,Json格式就是他的发明. 去年11月他有一个演讲(Youtube),谈到了好的Javasc ...

  3. 面向对象编程风格基于对象编程风格

    本文主要通过实现Thread 类来展现两种编程风格的不同点. 很多人没有区分"面向对象"和"基于对象"两个不同的概念.面向对象的三大特点(封装,继承,多态)缺一 ...

  4. 各种当下编程风格一览,看一看你属于哪一种?

    在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗? 散弹枪编程 这种编程风格是一种开发者使用非常随意的方式对待代码.嗯,这个方法调用出错了那么我会试着把传出 ...

  5. 各式各样的编程风格 ~~~

    今天我们来看一看各式各样的编程风格~这些编程风格当然也都是小编在网上看到的,整理一下而已~~ (一)首先是华为腾讯的编程风格 一:华为公司程序设计风格 1. 排版 1.1 程序块要采用缩进风格编写, ...

  6. JavaScript——编程风格

    本篇文章我们将讨论如何将新的语法应用在编码实践当中,与传统的 JavaScript 语法结合在一起,写出合理的.易于阅读和维护的代码. 所谓"编程风格",指的是编写代码的规则.不同 ...

  7. Github上的一个非常流行的编程书籍索引

    非常流行的编程书籍索引 语言无关类 操作系统 智能系统 分布式系统 编译原理 函数式概念 计算机图形学 WEB服务器 版本控制 编辑器 NoSQL PostgreSQL MySQL 管理和监控 项目相 ...

  8. 【ES6】ES6编程规范 编程风格

    [ES6]ES6编程规范 编程风格 一.定义变量的规范 二.字符串 三.对象 四.数组 五.函数 查看更多ES6教学文章: 参考文献 引言:这是ES6系列教学的最后一篇.我们讲解一下ES6编程的规范. ...

  9. 韩磊老师与C#编程风格

    韩磊老师与C#编程风格 --享誉全球的C#经典著作 好消息:韩磊老师将在9.5日的CSDN英雄大会(上海)上现场签名售书,敬请关注. 详细信息:http://www.china-pub.com/209 ...

  10. c语言各种编程风格 微软 gnu,编程规范-c语言的编程风格

    第一章:缩进格式 Tab是8个字符,于是缩进也是8个字符.有很多怪异的风格,他们将缩进格式定义为4个字符(设置为2个字符!)的深度,这就象试图将PI定义为3一样让人难以接受. 理由是:缩进的大小是为了 ...

最新文章

  1. MobileNetV3 vs efficientnet
  2. JAVA面试题(27)
  3. ASP.NET MVC+JQueryEasyUI1.4+ADO.NET Demo
  4. 反解析Navicat ncx加密后的密码(并导入到dbeaver)
  5. JVM学习笔记(一)JDKJREJVM
  6. jvm压缩指针原理以及32g内存压缩指针失效详解
  7. 转 黑客帝国解读 Matrix的世界
  8. Java函数replaceAll 的使用
  9. Tor去匿名化?俄罗斯联邦安全局秘密项目因承包商被入侵遭曝光
  10. VB.net下使用开源免费三维控件Anycad的应用实例分享
  11. 简单的中文姓名生成器
  12. 快速实施多账套多组织架构
  13. 在阿里云网站备案后,浏览器输入域名还是无法访问网站
  14. lftp和sftp区别联系
  15. linux ubuntu软件中心,Ubuntu软件中心
  16. Windows10 Technical Preview使用感受!
  17. UniApp IOS证书申请和注意事项
  18. 致中关村融信金融信息化产业联盟的一封信2022 –大小与进化
  19. 中国SaaS服务TOP30出炉
  20. 在线JWT Token解析解码工具

热门文章

  1. 实现ls -l功能 和目录实现
  2. Illustrator 教程,如何在 Illustrator 中对矢量图进行变形、定形和塑形?
  3. MacBooster清理除Mac大文件和旧文件
  4. 如何使用Xilisoft Video Editor将多个视频文件合并到一个文件中?
  5. 【10-2】复杂业务状态的处理(从状态者模式到FSM)
  6. 日本定了一个小目标,在2030年让五分之一的汽车实现自动驾驶
  7. 代码之美~强大的构造方法重载
  8. “鱼”和“熊掌”也能兼得——省时省心
  9. 深入Session2
  10. 7.07 生成累积乘积