zoukankan      html  css  js  c++  java
  • 20165203 实验三 敏捷开发与XP实践

    20165203 实验三 敏捷开发与XP实践

    任务一:

    1.实验要求

    实验三 敏捷开发与XP实践 (http://www.cnblogs.com/rocedu/p/4795776.html), Eclipse的内容替换成IDEA

    参考 http://www.cnblogs.com/rocedu/p/6371315.html#SECCODESTANDARD 安装alibaba 插件,解决代码中的规范问题。

    在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.实验过程:

    (1)学习了娄老师的博客,以下几点很重要:

    ①编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。

    ②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

    • UnwrapRemove:移除本类中所有代码段。

    • 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%
  • 相关阅读:
    生手和FinallyJane一起学习ASP.NET
    使用eclipse 初学java
    关于C#中用access做数据库,使用like语句的问题(转)
    VSS (Visual Source Safe 2005) 用法详解(转)
    mysql 字符集问题之我见
    mysqli的预处理功能使用
    兼容IE和Firefox
    linux下netsnmp 已经安装,为什么没有 snmpwalk和snmpget
    ? PHP WBEM
    安装cacti时提示错误
  • 原文地址:https://www.cnblogs.com/20165203-xyx/p/8967009.html
Copyright © 2011-2022 走看看