Robert C. Martin (Uncle Bob)

Always leave the campground cleaner than you found it.

童軍規則的起源#

童軍有一條規則:「永遠讓營地比你發現時更乾淨」(Always leave the campground cleaner than you found it)。如果你在地上發現了髒亂,無論是誰造成的,你都要清理它。你要刻意地為下一群露營者改善環境。(實際上,這條規則的原始版本來自童軍之父 Robert Stephenson Smyth Baden-Powell:「試著讓這個世界比你發現時好一點。」)

將規則套用到程式碼#

如果我們在程式碼中也遵循類似的規則呢?「每次簽入模組時,都讓它比簽出時更乾淨」。無論原始作者是誰,無論改動多小,只要你每次都努力改善模組,結果會是什麼?

  • 我們將終結軟體系統無情退化的現象
  • 系統會隨著演進而逐漸變得更好
  • 我們會看到團隊在照顧整個系統,而不只是個人各顧各的部分

這並不難做到#

你不需要在簽入之前讓每個模組都完美。你只需要讓它比簽出時好一點點(a little bit better)。這也意味著你新增的任何程式碼都必須是乾淨的,同時你至少要清理一件其他的事情。你可以:

  • 改善一個變數的命名
  • 把一個過長的函式拆成兩個較小的函式
  • 打破一個循環依賴(circular dependency)
  • 新增一個介面來將策略(policy)與細節(detail)解耦

這是基本素養#

坦白說,這聽起來就像基本的公民素養——就像上完洗手間洗手,或者把垃圾丟進垃圾桶而不是扔在地上。在程式碼中留下髒亂,應該被視為和亂丟垃圾一樣不可接受

照顧自己的程式碼是一回事,照顧團隊的程式碼是另一回事。團隊成員互相幫助、互相清理。他們遵循童軍規則,因為這對每個人都好,而不只是對自己好。