1. 程式人生 > >軟件工程讀書筆記(六)——結對編程那些事

軟件工程讀書筆記(六)——結對編程那些事

() 對數 tab 一起 什麽 關系 基本原則 got 得到

現代軟件產業經過幾十年的發展,已經形成了項目組合作的形式,幾乎不存在一個人完成所有工作的情況,一個團隊最少有兩個人組成,那麽兩人合作的過程中有什麽需要關註的地方呢?

一、 代碼風格規範

程序員寫的代碼是給電腦看的,能運行就是好代碼;但對於結對編程來說,能讓另一個人理解你的代碼,迅速掌握你代碼的邏輯關系至關重要,如果代碼格式寫成下圖這種藝術形式,可就讓人頭疼了。

/*

_ooOoo_

o8888888o

88" . "88

(| -_- |)

O\ = /O

____/`---‘\____

.‘ \\| |// `.

/ \\||| : |||// \

/ _||||| -:- |||||- \

| | \\\ - /// | |

| \_| ‘‘\---/‘‘ | |

\ .-\__ `-` ___/-. /

___`. .‘ /--.--\ `. . __

."" ‘< `.___\_<|>_/___.‘ >‘"".

| | : `- \`.;`\ _ /`;.`/ - ` : | |

\ \ `-. \_ __\ /__ _/ .-` / /

======`-.____`-.___\_____/___.-`____.-‘======

`=---=‘

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

佛祖保佑 永無BUG

*/

所以,需要制定一套行之有效的代碼風格:簡明、易懂、無二異性。

這裏記錄一下鄒老師總結的代碼風格規範:

  1. 縮進使用4個空格,因為tab在不同情況下會顯示不同的長度。
  2. 行寬100。
  3. 復雜表達式中用括號表達優先級,使邏輯清晰。
  4. 斷行使用如下格式:

If(condition)

{
DoSomething();

}

Else

{

DoSomethingelse();

}

  1. 一條語句放一行方便調試時設置斷點。

接下來著重講一下命名方案:匈牙利命名法,基本原則是:變量名=屬性+類型+對象描述。舉例來說,表單的名稱為form,那麽在匈牙利命名法中可以簡寫為frm,則當表單變量名稱為Switchboard時,變量全稱應該為 frmSwitchboard。這樣可以很容易從變量名看出Switchboard是一個表單,同樣,如果此變量類型為標簽,那麽就應命名成 lblSwitchboard。同時註意要避免過多的描述,如果信息可以從上下文中得到,那麽此類信息就不必寫在變量名中。

二、 代碼設計規範

  1. 函數,最重要的原則:只做一件事。
  2. 函數需要有單一出口,可以借助goto達到這一目的,有助於程序邏輯的清晰體現。
  3. 錯誤處理:對傳入參數驗證正確性,對指針驗證其正確性。
  4. 如果只是對數據進行封裝,用struct即可不必使用class。
  5. New之後記得要delete。

三、 結對編程的優勢

1、互相鼓勵,不容易沮喪:團隊工作能增加成員的工作積極性。因為在面對問題的時候,會有人一起分擔,共同嘗試新的策略。

2、互相監督,不容易偷懶:兩個人一起工作需要互相配合,如果想偷懶去幹別的,就會拖延工作進度。

3、互相學習編程技巧:在編程中,相互討論,可以更快更有效地解決問題,互相請教對方,可以得到能力上的互補。

4、可以培養和訓練新人:讓資深開發者和新手一起工作,可以讓新人更快上手。

5、多雙眼睛,少點 bug:兩人互相監督工作,可以增強代碼和產品質量,並有效的減少 BUG。

在學校中較難實現真正意義上的結對編程,只能實現兩人合作,合作過程中出現分歧,如何高效解決,給對方積極的反饋。三明治法是一個不錯的選擇:“三明治”式的批評,是指對某個人先表揚、再批評、接著再表揚的一種批評方式。由於這種批評方式並不是一味地采取批評的手段,而是在二層厚厚的表揚之間夾雜著批評,因此被稱為“三明治”式的批評。

例如電視劇《西遊記》中,在孫悟空保護唐僧取經的過程中,佛祖曾說過三句話:

你這潑猴,一路以來不辭艱辛保護師傅西天取經。

這次何故棄師獨回花果山,不信不義。

去吧,我相信你定能發揚光大,保護師傅取得真經。

這三句話褒中有貶,既肯定了孫悟空前面保護唐僧的所作所為,又批評了他這次的不信不義,最後提出目標和期望,恰到好處地激勵了孫悟空的鬥誌。

在團隊合作中掌握了適當的建議方式,使團隊能和睦融洽,才是生存之道。

軟件工程讀書筆記(六)——結對編程那些事