`

各种流行的编程风格

阅读更多

在过去的N年中,我遇到了很多编程风格囧然不同的开发者,下面是我所知道的一些,你还知道其它的吗?
  散弹枪编程(Shotgun Programming)

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

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

  这是一种比散弹枪编程要温和一些的编程方式,我相信这种方式可能会是大多数程序员都会使用的方式。这种编程方式经常出现于程序员并不确切知道他们在干什么,也不知道所写的程序的本质,但是可以让程序工作起来。他们以一种撞大运的方式在写程序,某些时候,他们根本就不知道某个错误的原因,就开始稀里糊涂地修改代码。一旦出现问题,他们会用两条路:1)停下来,理解一下程序,找到出错的原因。2)使用散弹枪编程方式开始解决问题。

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

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

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

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

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

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

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

  与此同时,一个正常的程序员修正了其它5个Bug。
  屠宰式编程(Butcher programmer)

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

相关推荐

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

    根据给定的信息,本文将...通过上述对各种流行编程风格的介绍,我们可以看到不同的编程风格各有优缺点,在实际开发过程中选择合适的编程风格非常重要。理解和掌握这些编程风格对于提高软件质量和开发效率具有重要意义。

    c语言的编程风格

    在C语言编程中,编程风格是非常重要的一部分,它关乎代码的可读性和可维护性。以下是一些关于C语言编程风格的关键知识点: 首先,关于缩进。标准的C语言编程风格倾向于使用8个字符作为一次缩进的宽度。这是因为8个...

    C语言编程风格

    ### C语言编程风格:良好编程习惯的基石 在IT行业,尤其是软件开发领域,良好的编程习惯被视为提升代码质量、维护性和可读性的关键。本文将深入探讨“C语言编程风格”,这一主题旨在帮助程序员们写出既美观又高效的...

    C++ 编程风格指导

    ### C++ 编程风格指导 #### 一、概述 《C++编程风格指导》这本书是一本关于C++面向对象程序设计的专业教材。它由李涛主编,游洪跃、陈良银、李琳共同编写,并得到了国家自然科学基金以及四川大学精品课程建设基金...

    React 编程风格指南1

    在团队开发中,遵循统一的编程风格对于提高代码可读性、维护性和协作效率至关重要。以下是一些关于React编程风格的指南: 1. **组件方法顺序**:在React组件内部,应按照生命周期方法的顺序排列,从`...

    gooleC++编程风格指南

    《谷歌C++编程风格指南》是一本旨在统一和优化C++代码编写规范的重要参考资料,它由谷歌公司制定,被广泛应用于其内部项目中,并逐渐在软件开发社区中流行开来。该指南的目标是提高代码的可读性、可维护性和团队协作...

    目前流行的编程语言介绍

    本文将简要介绍几种当前流行的编程语言,帮助初学者选择合适的语言进行学习。 1. Java: Java是一种面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)开发。它具有跨平台的特性,意味着编写一次即可在...

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

    标题提到的"各种流行软件的3D图标200个"是一个资源集合,包含了多个知名软件的高质量3D图标设计。这些图标都是以300x300像素的尺寸制作,确保了在不同设备和分辨率下都能清晰展示。 PNG(Portable Network Graphics...

    VC编程实现IE风格的界面

    在VC++编程中,创建IE风格的界面主要是为了提供一种用户友好的体验,与流行的Internet Explorer浏览器界面保持一致。要实现这一目标,开发者需要利用MFC(Microsoft Foundation Classes)库中的特定类和方法。以下是...

    VC编程资源大全(各种风格按钮、列表)

    这个"VC编程资源大全(各种风格按钮、列表)"压缩包显然提供了丰富的编程元素,特别是针对用户界面(UI)的设计。以下将详细介绍其中可能包含的知识点。 1. **按钮控件**: - XP风格按钮:在Windows XP系统流行...

    Python与Tkinter编程

    它支持面向对象、命令式、函数式和过程式编程风格。 掌握Python基础之后,学习Tkinter的GUI编程是自然的扩展。Tkinter的全称是“Tk Interface”,其设计目的就是为了让Python开发者能够方便地创建图形用户界面。...

    Python 编程实践

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

    C#和Java编程规范

    根据提供的文件内容,可以看出文档内容涵盖广泛的编程规范,适用于C++、C#以及.NET平台的编程风格指导。这些规范旨在帮助开发者提高开发效率,减少代码错误,并增强代码的可维护性。文档详细说明了各种编码习惯,...

    Java并发编程实践.pdf

    * 无论在Java、C++或其他流行语言中,编程风格一致 * 适用于多核的各种操作系统 * 可以进行并发编程正确性的测试 二、Amino在Java中的应用 Amino Java类库将提供优化后的并发线程组件,适用于JDK6.0及其以后的版本...

    ICO_编程图标大全

    总的来说,这个"ICO_编程图标大全"压缩包提供了一个丰富的图标库,适用于各种编程和设计项目。无论是专业人士还是业余爱好者,都能从中找到灵感或直接使用这些图标,提升他们的作品质量。由于图标是16*16像素,因此...

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

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

    VC 界面编程-XP风格按钮

    XP风格的按钮就是一种流行的设计趋势,它模仿了微软Windows XP系统中的图形用户界面元素,使得按钮在视觉上更加平滑、精致。本篇将详细讲解如何在VC++中实现XP风格按钮的界面编程。 首先,我们需要了解Windows API...

    python编程金典

    - 支持多种编程范式,包括面向对象、命令式、函数式和过程式编程风格。 2. **Python环境搭建** - 安装Python官方版本:访问Python官方网站下载最新稳定版。 - 配置环境变量:确保可以在命令行中直接调用Python...

Global site tag (gtag.js) - Google Analytics