1.實驗要求html
實驗三 敏捷開發與XP實踐 (http://www.cnblogs.com/rocedu/p/4795776.html), Eclipse的內容替換成IDEAjava
參考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安裝alibaba 插件,解決代碼中的規範問題。git
在IDEA中使用工具(Code->Reformate Code)把下面代碼從新格式化,再研究一下Code菜單,找出一項讓本身感受最好用的功能。提交截圖,加上本身學號水印。編程
public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer.capacity()<20) buffer.append("1234567"); for(int i=0; i<buffer.length();i++) System.out.println(buffer.charAt(i)); } }
2.實驗過程:app
(1)學習了婁老師的博客,如下幾點很重要:ide
①編程標準包含:具備說明性的名字、清晰的表達式、直截了當的控制流、可讀的代碼和註釋,以及在追求這些內容時一致地使用某些規則和慣用法的重要性。工具
②Java中的通常的命名規則有:單元測試
(2)IDEA的Code菜單學習:學習
Code菜單中內容頗爲豐富,並且不少功能均可以經過快捷鍵實現,大大方便了咱們編程。測試
Code菜單截圖如圖所示:
自認爲比較經常使用的功能:
Override Methods
(Ctrl+O):重載基本類的方法。(起初,本身特地到扇貝單詞查了這個短語的意思,爲「覆蓋方法」,本身猜到應該是「重載方法」,又嘗試了一下,結果驗證正確)
Implent Method
(Ctrl+l):編寫當前類implements的接口方法Generate
(Alt+Insert):建立所選中字段的getter與setter方法Surround With
(Ctrl+Alt+T):使用語句包裝代碼段,例如if-else
,try-catch
,do-while
等Unwrap\Remove
:移除本類中全部代碼段。Comment with Line Comment
:註釋所選代碼行Comment with Block Comment
:在光標所在位置插入註釋。Reformat Code
:將代碼按格式縮進字符。
在碼雲上把本身的學習搭檔加入本身的項目中,確認搭檔的項目加入本身後,下載搭檔實驗二的Complex代碼,加入很多於三個JUnit單元測試用例,測試成功後git add .; git commit -m "本身學號 添加內容";git push;
提交搭檔項目git log的截圖,包含上面git commit的信息,並加上本身的學號水印信息。
搭檔的Complex代碼:
搭檔的Complex測試碼:
學習(http://www.cnblogs.com/rocedu/p/4795776.html), Eclipse的內容替換成IDEA
完成重構內容的練習,下載搭檔的代碼,至少進行三項重構,提交重構後代碼的截圖,加上本身的學號水印。提交搭檔的碼雲項目連接。
看了婁老師給的教程後,Refactor
的功能很豐富,它幫咱們規範了代碼,使代碼更易懂,更上升了一個檔次。
搭檔的代碼以下:
搭檔代碼出現的問題:
Student
類中封裝不明顯。修改後以下:
參考 http://www.cnblogs.com/rocedu/p/6683948.html,以結對的方式完成Java密碼學相關內容的學習,結合重構,git,代碼標準。
提交學習成果碼雲連接和表明性成果截圖,要有學號水印。
咱們選擇的是凱撒密碼:
咱們的分工是我負責加密部分,搭檔負責解密部分。
加密部分的僞代碼以下:
輸入明文 輸入密鑰 進行移位轉換 輸出密文
我根據僞代碼寫出產品代碼:
import java.util.Scanner; public class CaesarE { public static void main(String[] args) { System.out.print("請輸入明文:"); Scanner a=new Scanner(System.in); String b=a.nextLine(); System.out.print("請輸入祕鑰:"); Scanner c=new Scanner(System.in); int key=c.nextInt(); Encrypt(b, key); } public static void Encrypt(String str,int k){ String s=""; for (int i = 0; i < str.length(); i++) { char c=str.charAt(i); if(c>='a'&&c<='z'){ c+=k%26; if(c<'a') c+=26; if(c>'z') c-=26; }else if(c>='A'&&c<='Z'){ c+=k%26; if(c<'A') c+=26; if(c>'Z') c-=26; } s+=c; } System.out.println(str+" 加密爲: "+s); } }
我和搭檔的產品代碼運行結果以下:
Q1:在學習任務一時,在打開Code
時,菜單裏的許多項都不認識,感受無從下手。
A1:
法一:
我在扇貝單詞中查詢單詞意思,而後再猜一下。
好比,對於override Methods
,通過查詢爲覆蓋方法
,天然就爲重載類的基本方法
了。
法二:
就是嘗試點擊,看看會出什麼結果,根據結果推出做用,典型的就爲Surround With
,嘗試點擊,出現如圖所示結果:
天然就是用if-else
try-catch
do-while
等包裝代碼段了。
Q2:在IDEA中,一開始沒有找到在Elicpes中的Generate toString()
。
A2:後來,本身在Code
中的Generate
中也發現了toString()
,也能夠用的。
本次實驗給了我和搭檔充足的合做機會,咱們體會了一次比較大的合做,的確,人多力量大,衆人拾柴火焰高,這些都讓咱們體會到告終對編程的意義,
步驟 | 耗時 | 百分比 |
---|---|---|
需求分析 | 12min | 10% |
設計 | 10min | 8% |
代碼實現 | 48min | 40% |
測試 | 40min | 34% |
分析總結 | 10min | 8% |