《構建之法》第4、十七章讀後感

  在讀了第四章和第十七章後,在對代碼的規範和設計風格上有了新的認識,對結對編程有了必定的認識;同時對程序員在將來公司中的工做情況有了必定的瞭解,在對績效和職業道德上有了新的認知。html

第四章:兩人合做程序員

1、書中75頁4.3.2goto一節中提到:函數最好有單一的出口,爲了達到這一目的,可使用goto。只要有助於程序邏輯的清晰體現。什麼方法均可以使用,包括goto。我有一些疑惑,在大一上學期咱們學習C語言的時候,當時對goto語句的印象是認爲goto語句不建議使用。因而我上網查了一些資料,有如下兩種說法。算法

(一)建議使用goto語句編程

    goto語句使用起來比較靈活,並且有些情形可以提升程序的效率。若是一味強調刪除goto語句,有些情形反而會使程序過於複雜,增長一些沒必要要的計算量【2】。在結構化程序設計中通常不主張使用goto語句, 以避免形成程序流程的混亂,使理解和調試程序都產生困難。【1】模塊化

 (二)建議廢除goto語句函數

      goto語句是對程序結構影響最大的一種有害語句;他們的主要理由是:goto語句使程序的靜態結構和程序的動態執行之間有很大的差異,這樣使程序難以閱讀,難以查錯。對一個程序來講,人們最關心的是他運行的正確與否,去掉goto語句後,能夠直接從程序結構上反映程序的運行過程。這樣,不只使程序的結構清晰、便於閱讀,便於查錯,並且也有利於程序正確性的證實。【2】學習

   D.E.Knuth (算法界的超級大牛,The art of computer programming 的做者)對於goto語句的爭論做了全面的公正的評述,他的基本觀點是:不加限制地使用goto語句,特別是使用往回跳的goto語句,會使程序的結構難於理解,這種情形應該儘可能避免使用goto語句;另外,爲了提升程序的效率,同時又不破壞程序的良好結構,有控制地使用一些goto語句是有必要的。用他的話來講:「有些情形,我主張廢除轉向語句,有些情形我主張引進轉向語句。」(見D.E.Knuth的大做:《帶有轉向語句的結構化程序設計》)測試

綜合以上說法,我認爲咱們應該謹慎的使用goto語句。goto語句的設計自身是沒問題的,之因此建議避免,我以爲這是一個軟件工程的問題。好比說,容易破壞代碼的模塊化組織結構,容易下降代碼的可讀性,以及代碼增加到必定規模後的可控性等等。畢竟,在一個團隊中,項目的代碼不老是一我的維護的,你的goto你懂,但不表明別人也懂,並且你們技術水平以及對代碼的理解誰也不能保證步調一致,濫用goto,會提高項目出現bug的機率。【3】spa

ps:什麼狀況下用到goto:.net

   當程序有多層嵌套,當處在嵌套內的邏輯判斷爲真或爲假時,須要完全或者連續跳出幾層循環時,通常考慮使用goto,由於break一次只能跳出一層,而且須要跳出多層循環時須要假如更多的判斷邏輯,這種狀況下,會考慮使用goto,還有就是在大型程序中處理複雜邏輯時,通常也會考慮使用goto。【4】 

2、書中88頁4.6:疑問:當結對編程時雙方在磨合階段發生意見難以調和,難以過渡到規範階段,此時應該怎麼處理?

第十七章:人,績效和職業道德

1、書中400頁中提到:重大決定應該由「豬」來定奪,這與個人觀點不一樣,從技術角度來說,研發和市場的第一線全心投入的人,他們在技術最有發言權和決定權,可是從現實角度來說,作決定的每每應該是領導階級,由於他們在項目的將來發展上更具備市場前瞻性和掌控全局的能力,我認爲領導應作重大決定,這樣能更好的引領整個工程的發展。

2、書中402頁17.6績效管理部分關於如何才能更好的衡量技術人員的工做量以及如何分配工資,我有一些想法。一開始我認爲在一個團隊中,通過一段時間的磨合,每個技術人員的能力和工做量想必團隊的每一個人都心知肚明,背對背的評比我認爲是比較合適的,可是確實又存在「小團體現象」,因而我上網查閱了相關資料,找到了認爲比較合適的方法:主客觀相結合、合理量化、雙向和多向評價:對於上級對下級能夠直接給予評價的行爲,下級應該也能集體給上級打分。對於主觀考覈部分,應該作到360度測評,對某個開發人員的評價,能夠先由開發人員本身給本身的主觀評價部分打分,再由主管、團隊內同事review評價,綜合肯定最終評價、考覈程序員的側重點應該放在過程上,而不是業務的結果上、參與了多少項目,寫了多少代碼和文檔,多少測試代碼,完成多少模塊和用例,解決了多少問題,bug率多少,reopen的bug率多少,多少次工做交付延期,多少次工做失誤,內部作了多少次技術交流分享。等等在研發過程當中的工做度量、制度考勤。【5】

  但很遺憾的是至今沒有任何可行的具體測量方法能精確的評估程序員個體的貢獻度。並無解決這個問題的「銀彈」。只能綜合各方面,儘可能的達到公平化以及合理化,最大限度的激勵技術人員。

參考博文 

【1】goto語句百度百科https://baike.baidu.com/item/goto%E8%AF%AD%E5%8F%A5/7603004?fr=aladdin  

【2】關於goto語句,https://blog.csdn.net/starfish/article/details/10599

【3】做者:張國鈺,來源:知乎,連接:https://www.zhihu.com/question/21981058/answer/19931297

【4】 C語言之goto淺,https://www.cnblogs.com/newbeeyu/p/5837347.html 

【5】談談程序員的績效考覈,https://blog.csdn.net/kimmking/article/details/9946319 

相關文章
相關標籤/搜索