前輩你在想什麼?

原文為 The Mind of a Programmer ,以下為自己看完的心得. 標題會這樣寫,是因為作者另一篇文裡的引語: "Smart people are not meant to be programmers. " . 我覺得我前輩實在是太聰明了! 我難以望其項背! 故以此標題緬懷他! Orz

解決問題總有不只一種以上的方法,更別題寫程式來解問題了! 原文中以判斷奇數/偶數來做例子.

// if divisible by 2 then is even else is odd boolean
isEven = number % 2 == 0; // 直接使用數學運算.

// if last bit is 0 then is even else is odd boolean
isEven = (number & 1) == 0; // 使用位元運算.

對我來說,第一種方法會有比較好的閱讀性. 使用第二種方法的考量可能在效率,或者是你就是作者所說的天生好手(natural born programmers).

不過若是以效率做考量的話,根據 Code Complete 給的建議:

  1. 任何的最佳化,一定要經過實際測量才能確定其效率,要不然都是 "紙上效率" .
  2. 以閱讀性為優先. 真的有必要修改,效率待經過(1)的測試,並且補上完整的註解,才是比較好的作法.

至於在使用這些資工課程上學到的 Common Pattern,我會比較傾向將敘述封裝至一個方法當中,而不是到處都可以看到此敘述的寫法.

public boolean isEven(number)
{
return (number & 1) == 0; // 使用位元運算.
}

把不必要曝露出來的實作細節集中並封裝到 isEven 方法.

延伸閱讀: KISS principle ("Keep It Simple, Stupid").

0 則回應: