2008年4月12日

當「你寫的程式我看不懂」時,誰該檢討?

fr3@K處看到這篇〈五種寫For Loop的方法〉,讓我想起之前同事在看我寫的程式時,遇到的問題。

當時的程式便是一個for loop,而我的寫法是該文提到的第二種方法「for_each加上手寫的functor」。(fr3@K的評論是:(註:感謝fr3@K的指正,差一句,真的差很多)若大規模的使用,很可能要寫一堆這種小小的 functor,一點也不優雅,還很令人困擾)。

當同事告訴我,他看不懂我寫的那段for_each的程式碼,(心裡)直覺的反應是:『老天,未免太不用功了吧!這麼簡單的程式,居然看不懂』。後來他又補上一句:『公司好像只有你寫這種程式』。喔,難道是質疑我寫「這種程式」的動機是讓別人都看不懂嗎?

for_each是C++ Standard Template Library,公司使用C++開發軟體,難道限制我不用C++ Standard Template Library,的理由是別人會看不懂嗎?

面對這種情況,我不會妥協,看不懂是只怪你不夠用功。如果自認為是「專業」的程式設計師,多讀點書,至少C++要摸熟吧。

以下是當時的程式碼精簡版:

vector<object> vo;
// add some object to vo
for_each(vo.begin(), vo.end(), DoSomethingOnIt);

針對vector裡的每一個物件,進行DoSomethingOnIt的動作。for_each幫我處理迴圈等鎖事,我只要專心處理DoSomethingOnIt裡的程式邏輯。DoSomethingOnIt可以是可重複利用的碼。

3 則留言:

fr3@K 提到...

>> 當事人澄清 <<
原文是:
若大規模的使用, 很可能要寫一堆這種小小的 functor. 不但一點也不優雅, 還很令人困擾

sam 提到...

真是不好意思,文章表達不是很清楚,請見諒。

本文主要的論點在於「C++程式設計師應該熟悉自己吃飯的傢伙」。

小弟相當認同您的論點,在您的blog上學到不少好東西,感謝分享。

fr3@K 提到...

很高興聽到我的 blog 對你有幫助.
謝謝你的鼓勵.

Google Analytics

Powered By Blogger
Get Paint.NET!