`
talentluke
  • 浏览: 592173 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

各种流行的编程风格

 
阅读更多

转自http://coolshell.cn/articles/2058.html

在过去的N年中,我遇到了很多使用囧然不同风格的开发者,下面是我所知道的一些,你还知道其它的吗?

散弹枪编程

这种编程风格是一种开发者使用非常随意的方式对待代码。“嗯,这个方法调用出错了……那么我会试着把传出的参数从 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个部署描述符。

分享到:
评论

相关推荐

    各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格

    各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格 各种流行的编程风格

    用函数式编程技术编写优美的 JavaScript

    函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平台上的 Haskell 的出现,函数式编程变得更加...此外,可以利用函数式编程风格编写更加优美的回调。

    各种流行软件的3D图标200个

    尺寸:300x300,格式:PNG,包含常见软件的3D图标设计,包括Adobe系列产品,Aol、MSN、ACDSee等等

    Python 编程实践

    python是当今世界流行的编程语言之一。python编程实践共15章,通过一些短小精悍的交互式python脚本帮助学生进行练习,并在这个过程中掌握诸如数据结构、排序和搜索算法、面向对象编程、数据库访问、图形用户界面等...

    kudojs:一个实用程序库,可使用Javascript以函数式编程风格编写代码

    KudoJS是一个小型实用程序库,其中包含流行的代数数据类型和Helper函数的集合,可帮助您以Java编程语言的功能性编程风格编写代码。安装将KudoJS安装并保存为当前项目中的依赖项 $ npm install --save fp-kudojs使用...

    Python编程实践

    Python是当今世界流行的编程语言之一。本书共15章,通过一些短小精悍的交互式Python脚本帮助学生进行练习,并在这个过程中掌握诸如数据结构、排序和搜索算法、面向对象编程、数据库访问、图形用户界面等基本概念以及...

    Windows Socket 编程资料

    Berkeley大学BSD UNIX中流行的Socket接口为范例定义了一套Micosoft Windows下网络编程接口。它不仅包含了人们所熟悉的Berkeley Socket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用...

    python编程实践

    Python是当今世界流行的编程语言之一。本书共15章,通过一些短小精悍的交互式Python脚本帮助学生进行练习,并在这个过程中掌握诸如数据结构、排序和搜索算法、面向对象编程、数据库访问、图形用户界面等基本概念以及...

    python编程设计(2).docx

    python编程设计 Python编程设计是一种非常流行的编程语言,它被广泛应用于各种领域,包括数据科学、机器学习、人工智能、Web开发等。Python的简洁、易读、易学、易用等特点,使得它成为了很多程序员的首选语言。 ...

    Servlet与JSP核心编程

    《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...

    Html网络编程实例下载

    本书主要讲述利用HTML进行网页设计和...本书提供丰富的实例,采用循序渐进的方法,从基本知识和设计思想讲起,并以目前流行的网页设计风格为模板,进行全面彻底的分析。本书附带一张光盘,包括实例代码和所需程序文件。

    Python编程语言介绍.docx

    Python是现今最流行和最受欢迎的编程语言之一,拥有很多语言优势和特性。 Python语言是一门解释性语言,它在运行代码时不需要编译先将代码转变为机器码,直接执行源代码就可以得到结果。这使得开发者能够更加容易地...

    Python学习详细笔记

    Python 允许程序员使用不同的编程风格来创建简单或复杂的程序,获得更快的结果并编写代码,就像用人类语言说话一样。一些流行的系统和应用程序 在开发过程中使用 Python 的包括 Google 搜索,YouTube,BitTorrent,...

    用函数式编程技术编写优美的 JavaScript_ibm

    函数式编程语言在学术领域已经存在相当长一段时间了,但是从历史上看,它们没有丰富的工具和库可供使用。随着 .NET 平台上的 Haskell 的出现,函数式编程变得更加...此外,可以利用函数式编程风格编写更加优美的回调。

    RESTFUL WEB SERVICES中文高清版

    本书向读者介绍了什么是REST、什么是面向资源的架构(Resource-Oriented Architecture,ROA)、REST式设计的优点、REST式Web服务的真实案例分析、如何用各种流行的编程语言编写Web服务客户端、如何用三种流行的框架...

    C语言参考手册原书第五版

    这本畅销的权威参考手册对C语言的基本概念和运行库提供了完整的描述,同时还强调了以正确性、可移植性和可维护性为根本出发点的良好的C语言编程风格,被国外众多高校广泛采用为教材或教学参考书,本书描述了C语言...

Global site tag (gtag.js) - Google Analytics