20165203 實驗三 敏捷開發與XP實踐

20165203 實驗三 敏捷開發與XP實踐

任務一:

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中的通常的命名規則有:單元測試

  • 要體現各自的含義
  • 包、類、變量用名詞
  • 方法名用動賓
  • 包名所有小寫,如:io,awt
  • 類名第一個字母要大寫,如:HelloWorldApp
  • 變量名第一個字母要小寫,如:userName
  • 方法名第一個字母要小寫:setName
  • ...

(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類中封裝不明顯。
  • 主類的名字不符合命名規則。
  • 主類中的輸出語句不符合DRY規則。

修改後以下:

任務四:

參考 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%
相關文章
相關標籤/搜索