免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4679 | 回复: 15
打印 上一主题 下一主题

[转个帖子娱乐一把]各种流行的编程风格 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-22 15:15 |只看该作者 |倒序浏览
本帖最后由 狗蛋 于 2011-11-22 16:04 编辑

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

各种流行的编程风格
2010年1月22日 陈皓 发表评论 阅读评论 30,011 次点击   

在过去的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个部署描述符。

文章:来源
(全文完)

论坛徽章:
0
2 [报告]
发表于 2011-11-22 15:38 |只看该作者
对号入座,发现自己是  “屠宰式编程” 风格

论坛徽章:
14
巨蟹座
日期:2013-11-19 14:09:4615-16赛季CBA联赛之青岛
日期:2016-07-05 12:36:0515-16赛季CBA联赛之广东
日期:2016-06-29 11:45:542015亚冠之全北现代
日期:2015-07-22 08:09:472015年辞旧岁徽章
日期:2015-03-03 16:54:15巨蟹座
日期:2014-12-29 08:22:29射手座
日期:2014-12-05 08:20:39狮子座
日期:2014-11-05 12:33:52寅虎
日期:2014-08-13 09:01:31巳蛇
日期:2014-06-16 16:29:52技术图书徽章
日期:2014-04-15 08:44:01天蝎座
日期:2014-03-11 13:06:45
3 [报告]
发表于 2011-11-22 16:02 |只看该作者
本帖最后由 bruceteen 于 2011-11-23 13:32 编辑

"设计模式驱动型编程"式的家伙最令人恨

论坛徽章:
0
4 [报告]
发表于 2011-11-22 16:38 |只看该作者
Cargo-Cult   

论坛徽章:
1
白羊座
日期:2013-09-18 22:02:26
5 [报告]
发表于 2011-11-23 10:53 |只看该作者
都沾邊。但是我認為我屬於。

但是最符合的是 撞大运编程

论坛徽章:
17
水瓶座
日期:2013-08-29 12:09:27白羊座
日期:2014-08-07 12:36:42丑牛
日期:2014-07-24 12:44:41寅虎
日期:2014-04-16 16:15:33寅虎
日期:2014-03-12 09:28:43摩羯座
日期:2014-03-06 13:22:04技术图书徽章
日期:2014-03-06 11:34:50天蝎座
日期:2014-01-09 11:31:44寅虎
日期:2013-12-27 17:01:44双子座
日期:2013-12-27 12:32:29双子座
日期:2013-12-25 09:03:33丑牛
日期:2013-12-24 16:18:44
6 [报告]
发表于 2011-11-23 12:28 |只看该作者
好吧,我觉得散弹枪编程最酷,也许应该学习学习?

论坛徽章:
0
7 [报告]
发表于 2011-11-23 12:32 |只看该作者
其实我觉得 Cargo-Cult 编程 和 设计模式驱动型编程 重复了……

当然,后者更酷一些……

论坛徽章:
0
8 [报告]
发表于 2011-11-23 12:37 |只看该作者
本帖最后由 狗蛋 于 2011-11-23 12:45 编辑

话说,我还真遇到很多霰弹式编程的家伙……

刚来CU的时候,还和 刻舟求剑编程 流派干过一架……

设计模式驱动编程的代码,我还真维护过一次……
透过20多个设计模式,终于摸到主干后一看,他开20个线程读文件,读完再开20个线程同时分析。
我当时整个人都斯巴达了:你说你搞个线程不为了同时利用磁盘和CPU,反而强制它们一定要挤一块相互竞争一番……这样你累我累CPU硬盘都累,何必呢……



想想一下吧,一开栅,20条饿狼围着硬盘一通疯抢(硬盘眼泪汪汪,可惜被满头大汗遮盖了),把CPU凉一边做俯卧撑。

然后,20条饿狼快吃完了,CPU就是关着不让它们用:等等,等等,还有狼没吃完呢~~

等狼们都吃完了,一开栅,20条即将渴死的狼又绕着CPU一通疯抢(CPU:不光祖坟冒青烟,俺自己都要冒青烟了!)……
但是不行啊,不抢完不让访问磁盘……

你说这这这……这都算什么啊……


所以,这果断不是设计模式驱动编程,它其实是个特务,设计模式驱动编程只是它拿来掩盖身份的。实质上,它是霰弹编程!

论坛徽章:
0
9 [报告]
发表于 2011-11-23 12:42 |只看该作者
回复 8# 狗蛋
大哥,能讲一讲,你是如何修改的吗?

论坛徽章:
0
10 [报告]
发表于 2011-11-23 12:44 |只看该作者
回复 9# digdeep126


    哦,我要修改,我就只好屠宰式编程

那个模块不归我管,丢一边任其自生自灭算了……
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP