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

aqee發表於2012-09-25

  旁觀者效應

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

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

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

犯罪

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

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

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

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

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

  培養物主身份

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

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

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

  行動起來!馬上!

  感覺如何?在接下來的一週裡找一天時間,翻出一段程式碼,就當是走錯了路,拐進了一條本不想走到衚衕,修改一下。提交你的修改,並附加這樣的註釋:

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

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

相關文章