• “旁观者效应”是如何毁掉我们的代码


    英文原文:How the Bystander Effect is Ruining Your Code  来源:外刊IT评论 1964年,纽约昆斯区,28岁的Kitty Genovese在经受了长达35分钟的性侵犯后最终被谋杀致死,共有38个本地区人性正常的居民经过,但没有一人提供帮助。 旁观者效应  这个故事例证了‘旁观者效应’中的一个不幸的心理特:援助的几率与旁观者人数成反比。旁观者数量越多,他们当中任何一人进行援助的可能性越低。 作为程序员,我们几乎每天都能看到“旁观者效应”在起作用。如果你的代码库已经有了相当的体积和年月,你很可能知道它们会存在一些问题,比如缺乏封装或模块分离,类继承结构过于复杂,方法太长——读起来就像是Stephen King最近写的小说,未经测试或无法通过测试等等——但没人想去做点什么。 20070310041641Crime 图片来源: Abu Badali, CC 2.5, via wikimedia “旁观者效应”的问题根源 问题的根源是缺乏物主(所有者)身份。我们总是在假设别人会来修补这些问题。如果这些问题出现在我们的代码库中,我们很可能对之无动于衷,因为“这事儿跟我无关”。程序员对这样的问题通常的反应:这是别的程序员造成的问题,我才不管呢。这种“这事儿跟我无关”的态度很流行。 可是,这事儿事实上跟你有关。 外差因素(Externalities)的负面效应 经济学上有个词叫做“外差因素(Externalities)”,它形象的描绘了这样一个情况:A人从某件事情上获利,但B人却要为此买单或部分的买单。你作为B人,免不了会遇到要去修改A人所写的恐怖的类代码。你以为这个类应该是经过精心设计的,你以为它们都有相应的功能测试代码。但事实上,你为了一个小小的修改做了大量的工作。你的老板会奇怪,这样一个简单的任务为什么需要这么多的时间。别人犯下的愚蠢错误最终却要你来擦屁股——这就是“外差因素(Externalities)”的负面效应。 培养物主身份 纠正“外差因素“的负面作用的方法很简单:接受问题的所有者身份——不论问题是不是由你造成的。为什么要在意这个问题是谁的责任呢?造成这些问题的人很可能早就不知去向了。还在等待他们来修改这些问题吗?你永远都等不到。我们应该这样去想:除了我,没有人会来修改这些代码。 一旦你这样做了,一种所有者的身份就开始出现了。当你花了很大的功夫修改好了这些问题,而问题再次出现时,这些问题自然归你所有了,因为你为它们付出了汗水。 这样一来,我们就会开始”义务“的改进我们的代码库。你打开一段有问题的代码,你忧心忡忡的研究它,你忧心忡忡的心情很快云消雾散了,因为你发现有另外一个”圣人“已经把它修复了——多么美好的世界呀!这样的事情之所以能发生,是因为每个人都找到了自己的责任感。这是最美好的时刻。 行动起来!马上! 感觉如何?在接下来的一周里找一天时间,翻出一段代码,就当是走错了路,拐进了一条本不想走到胡同,修改一下。提交你的修改,并附加这样的注释:
    1
    2
    3
    /*
    JKH 09/12/2012 - <span><a href="http://www.amazon.cn/gp/product/B003BY6PLK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B003BY6PLK" title="重构" rel="nofollow" target="_blank">重构</a></span>了有问题的事务处理。如果这是你喜欢的,请将此做法传递!
    */
  • 相关阅读:
    可遇不可求的Question之DateTime.Ticks的单位篇(囧rz)
    可遇不可求的Question之SQLLite创建持久视图篇
    可遇不可求的Question之FusionCharts图表显示异常的解决办法
    可遇不可求的Question之安装的.NET Framework版本以及Service Pack
    可遇不可求的Question之不支持一个STA 线程上针对多个句柄的WaitAll
    可遇不可求的Question之Regex.Split解析乱码字符串异常篇
    Protocol Buffers proto语言语法说明
    [转]网页轻松绘制流程图:Diagramly
    笔记:代码整洁之道
    类之间的关系
  • 原文地址:https://www.cnblogs.com/Qbit/p/2778300.html
Copyright © 2020-2023  润新知