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% |