第四、十七章讀書報告
第四章:
問題一:第66頁,關於goto語句的使用。書中介紹了goto語句,並闡釋它的作用為讓函數具有單一的出口。而在我的認知裏,goto語句是極力避免的。
為什麽說要極力避免goto語句,它有不少好處,它可以不受限制的靈活跳轉,但是正是因為這個強大的功能,程序員在使用goto語句的時候就很容易因為跳轉而略過了一些關鍵語句。
比如:
goto state;
String s1,s2; //被goto跳過
int sum = 0; //被goto跳過
......
.....
state:
如果編譯器不能發現此類錯誤,每用一次goto語句都可能留下隱患。
還比如:
你正在閱讀上千行的代碼,但讀到一千行的時候暈頭轉向的,不明白程序中出現的一些子程序什麽意思,知道讀到最後看到了goto語句,然後再憤怒地跳回去一遍一遍看。可見,非常降低代碼的可讀性。
G·加科皮尼和C·波姆從理論上證明了:任何程序都可以用順序、分支和重復結構表示出來。這個結論表明,從高級程序語言中去掉GOTO語句並不影響高級程序語言的編程能力,而且編寫的程序的結構更加清晰。所以,我們完全不必用goto語句,任何需要goto語句的地方我們也可以用其它語句代替,並營造出更好的程序邏輯。不然,著會增加後期代碼維護的復雜度。因為真正的項目不是你單槍匹馬的做出來的,你需要和其他人合作。所以寫出的代碼應該是簡單易懂,容易維護的。
問題二:
P75頁的結對編程,它列舉了很多好處。1,在開發層次,結對編程能提供更好的設計質量和代碼質量,兩人合作解決問題的能力更強。2,對開發人員自身來說,結對工作能帶來更多的信心,高質量的產出能帶來更高的滿足感。3,在企業管理層次上,結對能更有效的交流,相互學習和傳遞經驗,分享知識,能更好地應對人員流動。總之如果運用得當,結對編程可以取得更高的投入產出比。
在我眼裏,它是理想化的編程方式,落實非常困難。它有很多缺點:
1、與合不來的人一起編程容易發生爭執,不利於團隊和諧。
2、經驗豐富的老手可能會對新手產生不滿的情緒。
3、一山不容二虎,開發者之間可能就某一問題發生分歧,產生矛盾,造成不必要的內耗。
4、開發人員可能會在工作時交談一些與工作無關的事,分散註意力,造成效率低下。
等等……
試想,在某一個學習環境,或者工作環境,和自己水平相當的人大概在20%裏,假設環境有一百人,你也就在20人內挑選,你要在著20人裏挑選夥伴。結對編程是一種非常親密的工作關系,如果你有對象,你是不是應該為了避嫌最好找同性,這一下減少一半,只剩10個人,在著10個人裏找到還沒有合作關系的人,又要減少一半,再找對應你脾氣,你對應他脾氣,最後只剩下幾個人是最佳選擇。再加上其它實際因素,你還能找誰做結對編程?
在中國,少聽說有工程師是結對編程,我覺得,結對編程至少在中國,是一個偏理想化的編程方式。
第十七章:
問題一:關於P370蘿蔔白菜的故事,書中給出的答案是,團隊的領導者文化決定了團隊的風格。那麽如果我剛進一個公司,我還不太清楚我所屬的團隊是什麽樣的風格。我該怎麽做?踏踏實實的編碼,考慮到各種異常處理,做好白菜,還是說做像個明星一樣的蘿蔔?
我本身的行為習慣是做白菜,但是在剛進公司不清楚團隊風格的情況下,我需要給自己曝光嗎?
問題雖短,但這確實是我一看到這個故事就在思考的問題,至今還未有答案。
第四、十七章讀書報告