任務(wù)1:

      在學(xué)習(xí)通上已經(jīng)完成,截圖如下所示:

 

 

任務(wù)2:

      結(jié)對(duì)的成員共同完成本次作業(yè),撰寫博客并將結(jié)對(duì)項(xiàng)目的程序發(fā)布到github上

 

博客的內(nèi)容安排如下:

 

(1)結(jié)對(duì)成員的博客鏈接地址

 

    我的結(jié)對(duì)成員的博客園地址:

                 http://www.rzrgm.cn/lql1997/p/11734183.html?tdsourcetag=s_pctim_aiomsg

 

(2)結(jié)對(duì)成員對(duì)四則運(yùn)算項(xiàng)目進(jìn)行代碼互審,并給出代碼審查結(jié)果表

 

     李奇?zhèn)惖拇a審查表(由嚴(yán)興旺完成)

 

 

   規(guī)范要求

            

  是否符合要求                                      

1.概要部分 (1)代碼符合規(guī)格需求和說明么? 符合
(2)代碼設(shè)計(jì)考慮是否周全? 是 
(3)代碼可讀性如何? 良好
(4)代碼容易維護(hù)么?  容易 
(5)代碼的每一行都執(zhí)行并檢查過了么?  是
2.設(shè)計(jì)規(guī)范部分 (1)設(shè)計(jì)是否遵從已知的設(shè)計(jì)模式或項(xiàng)目中的常用模式?  是
(2)有沒有硬編碼或字符串/數(shù)字等存在?  沒有
(3)代碼有沒有依賴于某一平臺(tái),是否會(huì)影響將來的移植?  沒有
(4)有沒有無用的代碼可以清楚?
3.代碼規(guī)范部分  修改的部分符合代碼標(biāo)準(zhǔn)和風(fēng)格嗎?  符合
4.具體代碼部分       (1)有沒有對(duì)錯(cuò)誤進(jìn)行處理?對(duì)于調(diào)用的外部函數(shù)是否檢查了返回值或處理了異常?  有
(2)參數(shù)傳遞有無錯(cuò)誤,字符串的長度是字節(jié)的長度還是字符的長度,是以0開始計(jì)數(shù)還是1開始計(jì)數(shù)?
(3)邊界條件是如何處理的?switch語句的default分支是如何處理的?循環(huán)有沒有可能出現(xiàn)死循環(huán)?  邊界條件及分支通過多組測(cè)試用例測(cè)試,沒有
(4)有沒有使用斷言來保證我們認(rèn)為不變的條件真的得到滿足?  沒有 
(5)有沒有優(yōu)化的空間?  有 
(6)數(shù)據(jù)結(jié)構(gòu)中有沒有用不到的元素?  沒有 
5.效能 (1)代碼的效能如何?最壞的情況是怎樣的?  代碼覆蓋率最高可達(dá)80%以上,最壞情況無算式結(jié)果輸出
(2)代碼中,特別是循環(huán)中是否有明顯可優(yōu)化的部分? 有 
6.可讀性 代碼可讀性如何?有沒有足夠的注釋? 較好,有足夠注釋 

 

 

       嚴(yán)興旺的代碼審查表(由李奇?zhèn)愅瓿桑?/span>

 

 

   規(guī)范要求

              

                 是否符合要求                                          

1.概要部分 (1)代碼符合規(guī)格需求和說明么?  符合
(2)代碼設(shè)計(jì)考慮是否周全? 是 
(3)代碼可讀性如何? 良好 
(4)代碼容易維護(hù)么? 不易
(5)代碼的每一行都執(zhí)行并檢查過了么?
2.設(shè)計(jì)規(guī)范部分 (1)設(shè)計(jì)是否遵從已知的設(shè)計(jì)模式或項(xiàng)目中的常用模式?  是 
(2)有沒有硬編碼或字符串/數(shù)字等存在?  沒有
(3)代碼有沒有依賴于某一平臺(tái),是否會(huì)影響將來的移植?  沒有
(4)有沒有無用的代碼可以清楚?   有 
3.代碼規(guī)范部分  修改的部分符合代碼標(biāo)準(zhǔn)和風(fēng)格嗎?  符合 
4.具體代碼部分       (1)有沒有對(duì)錯(cuò)誤進(jìn)行處理?對(duì)于調(diào)用的外部函數(shù)是否檢查了返回值或處理了異常?  沒有
(2)參數(shù)傳遞有無錯(cuò)誤,字符串的長度是字節(jié)的長度還是字符的長度,是以0開始計(jì)數(shù)還是1開始計(jì)數(shù)?  有
(3)邊界條件是如何處理的?switch語句的default分支是如何處理的?循環(huán)有沒有可能出現(xiàn)死循環(huán)?  邊界條件及分支通過多組測(cè)試用例測(cè)試, 沒有
(4)有沒有使用斷言來保證我們認(rèn)為不變的條件真的得到滿足?   沒有
(5)有沒有優(yōu)化的空間?   有 
(6)數(shù)據(jù)結(jié)構(gòu)中有沒有用不到的元素?  沒有
5.效能 (1)代碼的效能如何?最壞的情況是怎樣的?  代碼覆蓋率最高可達(dá)65%以上,最壞情況輸出算式相同
(2)代碼中,特別是循環(huán)中是否有明顯可優(yōu)化的部分?  有
6.可讀性 代碼可讀性如何?有沒有足夠的注釋? 一般,注釋不多 

 

 

(3)選取其中一個(gè)成員的項(xiàng)目為基礎(chǔ),進(jìn)行結(jié)對(duì)編程。結(jié)對(duì)項(xiàng)目撰寫的博客要求:

   

   (a)代碼改進(jìn)

              1.在變量定義方面做的比較好,能百分百的做到見名知意

    2.設(shè)計(jì)了幾個(gè)功能單一且完善的函數(shù),完成了函數(shù)的獨(dú)立性

              3.能較好的遵守代碼規(guī)范,代碼讀起來簡單易懂

              4.代碼的覆蓋率較高

 

        (b)描述結(jié)對(duì)編程的感受

 

 

  本周出于老師作業(yè)的要求,本周體驗(yàn)了一下結(jié)對(duì)編程,剛開始還覺得這沒什么稀奇,一樣都是編程嘛,體驗(yàn)了之后才知道結(jié)對(duì)編程的優(yōu)點(diǎn)。

  結(jié)對(duì)編程,從字面上講,就是兩個(gè)人一起編程。而1+1=?這個(gè)問題一直是一個(gè)疑問,可以大于2,可以等于2,可以小于2,從這次編程經(jīng)歷看來,結(jié)對(duì)編程(至少是我們這次結(jié)對(duì)編程),這個(gè)式子的答案應(yīng)該是大于2.

  關(guān)于結(jié)對(duì)編程的許多優(yōu)點(diǎn)和好處,在鄒欣老師的博客中http://www.rzrgm.cn/xinz/archive/2011/08/07/2130332.html都可以看到,我也就不多說,我主要分享一下我對(duì)這次結(jié)對(duì)編程經(jīng)歷的感想。在結(jié)對(duì)編程中,一個(gè)程序員負(fù)責(zé)寫代碼,另一個(gè)負(fù)責(zé)檢查代碼錯(cuò)誤,查閱必要資料等。這樣的編程看似只有一個(gè)人寫代碼,效率不如兩個(gè)人都寫代碼效率高,但事實(shí)是程序員往往會(huì)畫更多時(shí)間去調(diào)bug。

  編程過程中雖然遇到了很多問題,但我們最終將題目完成了,覺得還是蠻有成就感的。開始編程前,我們先討論了題目的思路,才開始的編程。討論確定使用面向?qū)ο蟮膉ava語言。在確定類的時(shí)候我們倆出現(xiàn)了分歧,他認(rèn)為只需要設(shè)計(jì)題目這個(gè)類,然后需要多少個(gè)題就構(gòu)造多少個(gè)這樣的對(duì)象。而我認(rèn)為需要設(shè)計(jì)題目、題集兩個(gè)類,題集里設(shè)置題目數(shù)組和題目數(shù)量兩個(gè)成員。于是我就在那糾結(jié)糾結(jié),到底怎么設(shè)置類,怎么設(shè)置類,糾結(jié)啊,或許大家的想法都有道理,但是究竟哪個(gè)好些。分析了半天,決定還是設(shè)置兩個(gè)類。我敲代碼,由比較細(xì)心小伙伴在旁邊為我”指路“。寫代碼的過程中出了幾個(gè)小問題,小伙伴一眼看到就給我指出來了,平時(shí)這種問題真是出的不少,如果是我一個(gè)人,待會(huì)兒估計(jì)又不知道哪里出錯(cuò),又要調(diào)試半天。

  結(jié)對(duì)編程的過程收獲頗多,我覺得結(jié)對(duì)編程有好有壞,但是好處遠(yuǎn)遠(yuǎn)大于的不好的地方。兩個(gè)人難免會(huì)遇到意見不同的時(shí)候,關(guān)鍵是看此時(shí)如何協(xié)調(diào)、如何溝通、如何采納。如果團(tuán)隊(duì)內(nèi)部不能很好地處理這些分歧,那么非但不能提高效率,反而會(huì)拖慢工作的進(jìn)程。如果團(tuán)隊(duì)協(xié)調(diào)得很好,那么兩個(gè)人的力量是絕對(duì)大過一個(gè)人的。一個(gè)人的想法始終有限,兩個(gè)人或者一群人合作,說不定還能擦出思想的火花。以前都喜歡一個(gè)人悶頭悶?zāi)X的敲代碼,就覺得兩個(gè)人想法太多太麻煩,現(xiàn)在看來,合作更加有效率呢。

  結(jié)對(duì)編程還能減輕彼此的負(fù)擔(dān),一個(gè)人寫完完整的代碼,往往會(huì)很累,最后bug頻出,但是結(jié)對(duì)編程中,在適當(dāng)時(shí)候兩個(gè)人可以互換角色,這樣寫代碼的任務(wù)就被分給了兩個(gè)人,也減少了bug率,這次編程我感覺bug出現(xiàn)得比平時(shí)少很多,基本功能的編寫時(shí)間也少了很多。

  總之,結(jié)對(duì)編程減少了程序bug出現(xiàn)的頻率,還減少了一個(gè)人寫程序的負(fù)擔(dān),更有助于彼此的互相學(xué)習(xí),大家不妨一試。

 

        (c)結(jié)對(duì)場(chǎng)景照片

      

 

 

(4)結(jié)對(duì)項(xiàng)目編程要求:(40分)

     lilbetter小組的github網(wǎng)站:

              https://github.com/lilbetter-l/work