練習四

1、學術界、工業界對結對編程已經有很多研究,請閱讀至少兩篇相關論文或論文,結合本身的切身體會總結一下。程序員

結對編程是軟件開發過程當中所使用的一種技術,兩名程序開發人員共享同一臺工做站。其中一個扮演駕駛者的角色,進行代碼編寫,另外一個扮演觀察員或導航員的角色,對代碼進行評測。他們能夠輪流編寫代碼和測試案例,還能夠坐在一塊兒交流思想,解決問題,而不會想偷懶去刷手機。編程

結對編程的好處:安全

一、互相鼓勵,不容易沮喪:團隊工做能增長成員的工做積極性。由於在面對問題的時候,會有人一塊兒分擔,共同嘗試新的策略。編程語言

二、互相監督,不容易偷懶:兩我的一塊兒工做須要互相配合,若是想偷懶去幹別的,就會拖延工做進度。工具

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

四、能夠培養和訓練新人:讓資深開發者和新手一塊兒工做,可讓新人更快上手。性能

五、多雙眼睛,少點 bug:兩人互相監督工做,能夠加強代碼和產品質量,並有效的減小 BUG。單元測試

結對編程的壞處:學習

一、與合不來的人一塊兒編程容易發生爭執,不利於團隊和諧。測試

二、經驗豐富的老手可能會對新手產生不滿的情緒。

三、一山不容二虎,開發者之間可能就某一問題發生分歧,產生矛盾,形成沒必要要的內耗。

四、開發人員可能會在工做時交談一些與工做無關的事,分散注意力,形成效率低下。

等等……

2、這是個人MBTI類型測試:http://www.apesk.com/mbti/submit_email_date.asp?code=223.73.241.5&user=17281131

ISFP安靜、友好、敏感、和藹。享受當前。喜歡有本身的空間,喜歡能按照本身的時間表工做。對於本身的價值觀和本身以爲重要的人很是忠誠,有責任心。不喜歡爭論和衝突。不會將本身的觀念和價值觀強加到別人身上。

INFP

理想主義,對於本身的價值觀和本身以爲重要的人很是忠誠。但願外部的生活和本身心裏的價值觀是統一的。好奇心重,很快能看到事情的可能性,能成爲實現想法的催化劑。尋求理解別人和幫助他們實現潛能。適應力強,靈活,善於接受,除非是有悖於本身的價值觀的。

INTP

對於本身感興趣的任何事物都尋求找到合理的解釋。喜歡理論性的和抽象的事物,熱衷於思考而非社交活動。安靜、內向、靈活、適應力強。對於本身感興趣的領域有超凡的集中精力深度解決問題的能力。多疑,有時會有點挑剔,喜歡分析。

ESTP

靈活、忍耐力強,實際,注重結果。以爲理論和抽象的解釋很是無趣。喜歡積極地採起行動解決問題。注重當前,天然不作做,享受和他人在一塊兒的時刻。喜歡物質享受和時尚。學習新事物最有效的方式是經過親身感覺和練習。

ESFP

外向、友好、接受力強。熱愛生活、人類和物質上的享受。喜歡和別人一塊兒將事情作成功。在工做中講究常識和實用性,並使工做顯得有趣。靈活、天然不作做,對於新的任何事物都能很快地適應。學習新事物最有效的方式是和他人一塊兒嘗試。

ENFP

熱情洋溢、富有想象力。認爲人生有不少的可能性。能很快地將事情和信息聯繫起來,而後很自信地根據本身的判斷解決問題。老是須要獲得別人的承認,也老是準備着給與他人賞識和幫助。靈活、天然不作做,有很強的即興發揮的能力,言語流暢。

ENTP

反應快、睿智,有激勵別人的能力,警覺性強、直言不諱。在解決新的、具備挑戰性的問題時機智而有策略。善於找出理論上的可能性,而後再用戰略的眼光分析。善於理解別人。不喜歡例行公事,不多會用相同的方法作相同的事情,傾向於一個接一個的發展新的愛好。

ESTJ

實際、現實主義。果斷,一旦下決心就會立刻行動。善於將項目和人組織起來將事情完成,並儘量用最有效率的方法獲得結果。注重平常的細節。有一套很是清晰的邏輯標準,有系統性地遵循,並但願他人也一樣遵循。在實施計劃時強而有力。坦誠、果斷,有天生的領導能力。能很快看到公司或者組織程序和政策中的不合理性和低效性能。

ESFJ

熱心腸、有責任心、合做。但願周邊的環境舒適而和諧,併爲此果斷地執行。喜歡和他人一塊兒精確並及時地完成任務。事無鉅細都會保持忠誠。能體察到他人在平常生活中的所需並不遺餘力幫助。但願本身和本身的所爲能受到他人的承認和賞識。

ENFJ

熱情、爲他人着想、易感應、有責任心。很是注重他人的感情、需求和動機。善於發現他人的潛能,並但願能幫助他們實現。能成爲我的或羣體成長和進步的催化劑。忠誠,對於讚賞和批評都會積極地迴應。友善、好社交。在團體中能很好地幫助他人,並有鼓舞他人的領導能力。

ENTJ

坦誠、果斷,有天生的領導能力。能很快看到公司/組織程序和政策中的不合理性和低效能性,發展並實施有效和全面的系統來解決問題。善於作長期的計劃和目標的設定。一般見多識廣,博覽羣書,喜歡拓廣本身的知識面並將此分享給他人。在陳述本身的想法時很是強而有力。

3、是否須要有代碼規範

 - 這些規範都是官僚制度下產生的浪費你們的編程時間、影響人們開發效率, 浪費時間的東西。

- 我是個藝術家,手藝人,我有本身的規範和原則。

- 規範不能強求一概,應該容許不少例外。

- 我擅長制定編碼規範,大家聽個人就行了。

- 規範的代碼能夠促進團隊合做

- 規範的代碼能夠減小bug處理

- 規範的代碼能夠下降維護成本

- 規範的代碼有助於代碼審查

- 養成代碼規範的習慣,有助於程序員自身的成長

 

4、 代碼複審的討論

    首先世界級的軟件也會由於小小的紕漏而致使世界級的問題。例如咱們經常聽到的安全漏洞和緊急補丁。其次,軟件的開發是一個社會性的活動, 有它的規律。其中一個規律就是「破窗效應」,若是團隊成員看到同伴們連一些細小的規範都不遵照,那本身還要嚴格執行單元測試麼?另外一個成員看到這個模塊連單元測試都沒有,那他本身也隨意修改算了。這樣下去,整個軟件的量可想而知。

徹底贊成鄒老師的觀點。代碼應該複審,規範應該要保持。

 

5、閱讀別人的代碼有多難?

咱們常常抱怨閱讀別人的代碼很難, 咱們本身在寫代碼的時候,是否考慮到如何讓代碼更易於閱讀和維護呢?

    總結文章中主要觀點:

    使代碼聽從工具

    堅持使用一種命名模式

    使用斷言來記錄先決條件(preconditions)和後置條件(postconditions)

    別縮寫英文單詞

    C語言標準運行時庫的設計不是很優秀。別去效仿它

    別寫「聰明」的代碼

    理解編程語言特性的設計初衷,使用這些特性去作它們適合完成的工做,而不是它們能作到的工做

按功能單元劃分源碼樹,而不是按組織結構

6、結對編程中很差的習慣—你經歷過麼,如何提醒同伴改進?

不拘小節的人 兩人在一塊兒近距離地工做,可是卻不注意我的衛生和互相尊重。開始合做前,吃了不少大蒜就來了。

喜歡發號施令的人 老是對敲鍵盤的人說:「到末行,加個反括號,而後……」。他不去關注解決方法和下一步該怎麼作,而過分關注一些編程細節。

拼寫糾錯者 坐在你旁邊,糾正你輸入的每一個錯誤字符。固然,他沒有時間來真正地進行導航。

深藏不露者 僅僅本身敲着代碼而不告訴別人他在作什麼。領航員不得不靠本身去弄懂代碼。關於該用什麼方法,該選擇哪一種設計,領航員和實施者之間徹底沒有交流。

跳躍很大的人 他們喜歡在代碼中進行大範圍的跳躍,這樣領航員便不知道進行到哪裏了。

答:(1)我的的儀表是對對方的尊重,若是個人同伴真的這樣,首先我會提出一塊兒去外面咖啡廳工做或者討論,這樣通常就會適當得體一些,而且給他口香糖吃。

(2)首先要確定對方的提醒,其次也向他提出,咱們應該首先解決問題,等一下再一塊兒糾正這些編程規範。

(3)好像是開車的時候被人不斷提醒同樣,有的時候這點確實讓人心焦,尤爲是不少的拼寫錯誤都是一時手誤並且編程工具會自動提醒,當遇到這樣的夥伴時,我以爲應該引導他像別的方向注意,在編程前就提出必定的問題但願幫忙留意。讓其把重點放在代碼上。

(4)一個組裏每每會有一個超過別人不少的人,他的思路和使用的新的技術每每讓人一頭霧水。結構和代碼也不太理解。這個時候應該作出改變的不僅是實施者,還有看代碼的人,要直接提出疑問,讓實施者回答,而且多進行討論交流意見,而且但願在編程中註釋。

(5)在看別人編程時,修改代碼時,由於不熟悉別人的代碼,修改時大幅度的跳躍和轉換,讓人不知道整個工程的現狀。這個時候能夠適當讓實施者停下,和他討論修改或者跳躍的緣由,理清思路。

相關文章
相關標籤/搜索