第四次博客作業-結對項目
- 2019 年 10 月 22 日
- 筆記
任務1:(5分)
在學習通上註明結對的成員對格式:四班龔艷飛—–四班羅雙奇
任務2:(95分)
結對的成員共同完成本次作業,撰寫博客並將結對項目的程序發佈到github上
博客的內容安排如下:
(1)提供你的結對成員的博客鏈接地址(5分)
龔艷飛的博客鏈接地址:
羅雙奇的博客鏈接地址:
(2)結對成員對四則運算項目進行代碼互審,並給出代碼審查結果表
龔艷飛的代碼審查表(由羅雙奇完成)(10分)
羅雙奇的代碼審查表(由龔艷飛完成)(10分)
(3)選取其中一個成員的項目為基礎,進行結對編程。結對項目撰寫的博客要求:(30分)
選擇為龔艷飛的項目為基礎進行結對編程。
(a)結合課堂講授內容,制訂一份2人共同遵守的代碼編寫基本規範(至少包括注釋規範與變量命名規範)。
1)變量命名規則
1、盡量使用完整的英文描述符
2、採用適用於相關領域的術語
3、採用大小寫混合使名字可讀
4、盡量少用縮寫,但如果用了,必須符合整個工程中的統一定義
5、避免使用長的名字(小於 15 個字母為正常選擇)
6、避免使用類似的名字,或者僅僅是大小寫不同的名字
7、避免使用下劃線(除靜態常量等)
2)包( Package )的命名
Package 的名字應該採用完整的英文描述符,都是由一個小寫單詞組成。並且包名的前綴總是一個頂級域名,通常是 com、edu、gov、mil、net、org 等;
3)類( Class )的命名
類名應該是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。盡量保證類名簡潔而富於描述。使用完整單詞,避免縮寫詞。
4)接口( Interface )的命名
基本與 Class 的命名規範類似。在滿足 Classd 命名規則的基礎之上,保證開頭第一個字母為 ”I”,便於與普通的 Class區別開。其實現類名稱取接口名的第二個字母到最後且滿足類名的命名規範;
5)異常( Exception )的命名
異常( Exception ) 通常採用字母 e 表示異常,對於自定義的異常類,其後綴必須為 Exception
6)方法( Method )的命名
方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。方法名儘可能的描述出該方法的動作行為。
7)參數( Param )的命名
第一個單詞的首字母小寫,其後單詞的首字母大寫。參數量名不允許以下劃線或美元符號開頭,雖然這在語法上是允許的。
一個很好的可遵循的有關注釋的經驗法則是:
1、一般概念
注釋應該增加代碼的清晰度
保持注釋的簡潔
在寫代碼之前或同時寫注釋
注釋出為什麼做了一些事,而不僅僅是做了什麼
2、注釋哪些部分
類:類的目的、即類所完成的功能。
接口:在滿足類注釋的基礎之上,接口注釋應該包含設置接口的目的、它應如何被使用以及如何不被使用。在接口注釋清楚的前提下對應的實現類可以不加註釋;
方法注釋:對於設置與獲取成員的方法,在成員變量已有說明的情況下,可以不加註釋;普通成員方法要求說明完成什麼功能,參數含義是什麼且返回值什麼;另外方法的創建 時間必須注釋清楚,為將來的維護和閱讀提供寶貴線索;
方法內部注釋:控制結構,代碼做了些什麼以及為什麼這樣做,處理順序等,特別是複雜的邏輯處理部分,要儘可能的給出詳細的注釋;
參數: 參數含義、及其它任何約束或前提條件;
(b)描述結對編程的感受。
俗話說”三個臭皮匠,勝過一個諸葛亮”,兩人在做同一件事時,集思廣義發揮各自優點,可以使我分析更能切中要害。
所謂條條大路通羅馬,但最捷徑的路卻只有那麼幾個。在兩人不斷集思廣益和努力下,在錯誤中我們尋找到了正確的方向,使用更加簡潔更加高效的代碼實現程序目的。
相互督促可以使我們都能集中精力,更加認真的工作,比傳統的孤膽英雄式開發要高效不止一個台階。比如我們一個人,按照共同完成的活動圖去編程,完成一小段邏輯後,另外一個人會馬上給出意見,說出代碼存在的潛在問題,這個潛在的問題,很可能是因為我們當時對項目理解存在偏差造成的。很可能這個時候我們要對設計進行改動以適應項目。
任何一段代碼都被兩雙眼睛看過,兩個腦袋思考過,代碼的質量會得到有效提高。
“三人行必有我師”,相互學習對方的技能,可以提升自己水平。
(c)結對場景照片
(4)結對項目編程要求:(40分)
對結對項目首先完成代碼規範和設計規範的修改,其次完成項目增加的需求,最後將完成的項目提交到github上,給出github的連接地址,可以給出簡單的設計說明。
地址鏈接:https://github.com/playeroflife/20194720/blob/master/demo
增加的需求:
(a)考慮數據異常處理問題,如在輸入題目生成範圍的數據時,輸入了“abc“等字符數據,程序如何處理。
private static void writeExpressionsToFile(ArrayList<String> expressionList) { File file = new File(FILE_NAME); try (FileWriter fileWriter = new FileWriter(file)) { fileWriter.append(STUDENT_NO); for (String expression : expressionList) { fileWriter.append(NEW_LINE); fileWriter.append(expression); } } catch (IOException e) { e.printStackTrace(); } }
(b)增大算式生成數的範圍(如整數存不下的數),程序如何處理。