今天有人對我現在進行項目的幾個方面提出了疑問,認為是幾點值得考慮的風險,自己在仔細考慮后覺得確實值得反思:
1、為什么要采用hibernate,采用OO設計取代傳統數據庫設計?
      覺得這個問題對我而言沒什么可值得仔細思考的部分,采用hibernate利大于弊,這點對我而言毫無疑問,一是因為即使不采用hibernate,在代碼中仍然要對獲取的resultset做轉化為對象的步驟,二是hibernate對通用CRUD的良好支持,三是數據庫無關性,四是對象關聯的支持。
      但以提問的人的觀點來看,一是他個人對于hibernate并不熟,認為他無法掌控,這就是風險,二是他認為采用hibernate反而增加了項目的實現難度。
      綜合自己的觀點和提問人的觀點來看,覺得在項目中采用什么樣的技術才是合適的技術確實是個值得思考的問題,怎么樣從可滿足項目的多種技術實現方案中進行選擇?
2、項目中采用XP是否合適?
      我采用XP被人置疑的地方竟然是項目成員的交流合作問題...... 這點讓我挺震驚的,這點我都不知道到底是我做的不對還是被人誤解,至少我認為我現在team的交流絕對比一般重型軟件過程的團隊交流做的好很多很多,早會、迭代會議、不時的討論等等,這些交流我覺得應該不會差吧,呵呵,不過被人疑問,我覺得至少就說明自己做的仍然不夠好。
      另外竟然還被看成是不做設計直接編碼的行為,在這點上我真的是覺得讓別人誤解了,CRC設計難道不是設計???而且我覺得CRC設計絕對是超越傳統的那種做詳細設計的方法的。
 
總而言之,我覺得有人提出疑問是好事,只有這樣才能真正仔細的去反思自己的很多做法。

另外,說說關于TDD,覺得自己現在才是真正的做TDD,今天在給一個同事講的時候真正的自己也去領悟TDD的好處,在寫一個對象的實現的時候,通常會在實現的過程漏掉一些邊緣性的檢測或別的問題,更突出的就是在集成的時候才發現問題,今天在實踐的時候突然覺得TDD的好處就在于迫使了開發人員在寫一個對象的實現之前仔細的考慮那個方法的功能、邊緣性的一些東西,這個時候通過編寫測試代碼就完全可以體現了,然后再去寫實現其實就比較簡單了,把握針對測試寫實現的原則,更不用說對于集成測試的好處了,呵呵,這樣才能發揮XP的很多優點,比如簡單設計、重構、持續集成等等。