“旁觀者效應”是如何毀掉我們的代碼的

jopen 12年前發布 | 5K 次閱讀 程序員

1964年,紐約昆斯區,28歲的 Kitty Genovese 在經受了長達 35 分鐘的性侵犯后最終被謀殺致死,共有 38 個本地區人性正常的居民經過,但沒有一人提供幫助。

</blockquote>

        英文原文:How the Bystander Effect is Ruining Your Code

“旁觀者效應”是如何毀掉我們的代碼的

圖片來源: Abu Badali, CC 2.5, via wikimedia

        這個故事例證了‘旁觀者效應’中的一個不幸的心理特:援助的幾率與旁觀者人數成反比。旁觀者數量越多,他們當中任何一人進行援助的可能性越低。

        作為程序員,我們幾乎每天都能看到“旁觀者效應”在起作用。如果你的代碼庫已經有了相當的體積和年月,你很可能知道它們會存在一些問題,比如缺 乏封裝或模塊分離,類繼承結構過于復雜,方法太長——讀起來就像是 Stephen King 最近寫的小說,未經測試或無法通過測試等等——但沒人想去做點什么。

        “旁觀者效應”的問題根源

        問題的根源是缺乏物主(所有者)身份。我們總是在假設別人會來修補這些問題。如果這些問題出現在我們的代碼庫中,我們很可能對之無動于衷,因為“這事兒跟我無關”。程序員對這樣的問題通常的反應:這是別的程序員造成的問題,我才不管呢。這種“這事兒跟我無關”的態度很流行。

        可是,這事兒事實上跟你有關。

        外差因素(Externalities)的負面效應

        經濟學上有個詞叫做“外差因素(Externalities)”,它形象的描繪了這樣一個情況:A人從某件事情上獲利,但B人卻要為此買單或部 分的買單。你作為B人,免不了會遇到要去修改A人所寫的恐怖的類代碼。你以為這個類應該是經過精心設計的,你以為它們都有相應的功能測試代碼。但事實上, 你為了一個小小的修改做了大量的工作。你的老板會奇怪,這樣一個簡單的任務為什么需要這么多的時間。別人犯下的愚蠢錯誤最終卻要你來擦屁股——這就是“外 差因素(Externalities)”的負面效應。

        培養物主身份

        糾正“外差因素“的負面作用的方法很簡單:接受問題的所有者身份——不論問題是不是由你造成的。為什么要在意這個問題是誰的責任呢?造成這些問 題的人很可能早就不知去向了。還在等待他們來修改這些問題嗎?你永遠都等不到。我們應該這樣去想:除了我,沒有人會來修改這些代碼。

        一旦你這樣做了,一種所有者的身份就開始出現了。當你花了很大的功夫修改好了這些問題,而問題再次出現時,這些問題自然歸你所有了,因為你為它們付出了汗水。

        這樣一來,我們就會開始”義務“的改進我們的代碼庫。你打開一段有問題的代碼,你憂心忡忡的研究它,你憂心忡忡的心情很快云消霧散了,因為你發 現有另外一個”圣人“已經把它修復了——多么美好的世界呀!這樣的事情之所以能發生,是因為每個人都找到了自己的責任感。這是最美好的時刻。

        行動起來!馬上!

        感覺如何?在接下來的一周里找一天時間,翻出一段代碼,就當是走錯了路,拐進了一條本不想走到胡同,修改一下。提交你的修改,并附加這樣的注釋:

/* JKH 09/12/2012 - 重構了有問題的事務處理。如果這是你喜歡的,請將此做法傳遞!*/

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!