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

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

20165203 实验三 敏捷开发与XP实践的更多相关文章

  1. 20145213《Java程序设计》实验三敏捷开发与XP实践

    20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...

  2. 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...

  3. JAVA课程实验报告 实验三 敏捷开发与XP实践

    北京电子科技学院(BESTI) 实     验    报     告 课程:Java程序设计  班级:1353  姓名:韩玉琪  学号:20135317 成绩:             指导教师:娄嘉 ...

  4. 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"

    20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...

  5. 20145215实验三 敏捷开发与XP实践

    20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...

  6. 20145325张梓靖 实验三 "敏捷开发与XP实践"

    20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...

  7. 20162311 实验三 敏捷开发与XP实践 实验报告

    20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...

  8. 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告

    2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...

  9. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

随机推荐

  1. docker:轻量级图形页面管理之Portainer

    docker:轻量级图形页面管理之Portainer 原创甘兵2018-03-05 14:26:56评论(8)2586人阅读   1.介绍 docker 图形化管理提供了很多工具,有Portainer ...

  2. 执行composer install后报错:执行composer install后报错: d11wtq/boris v1.0.10 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.

    执行composer install后报错: d11wtq/boris v1.0.10 requires ext-pcntl * -> the requested PHP extension p ...

  3. 并发库应用之三 & 线程池与定时器应用

    在TCP服务器编程模型的原理,每一个客户端连接用一个单独的线程为之服务,当与客户端的会话结束时,线程也就结束了,即每来一个客户端连接,服务器端就要创建一个新线程.如果访问服务器的客户端很多,那么服务器 ...

  4. go语言从零学起(三) -- chat实现的思考

    要通过go实现一个应用场景: 1 建立一个websocket服务 2 维护在线用户的链接 3 推送消息和接受用户的操作 列出需求,很显然的想到了chat模型.于是研究了revel框架提供的sample ...

  5. Django分别使用Memcached和Redis作为缓存的配置(Linux环境)

    1 使用memcached 1.1 安装memcached 安装(Linux) sudo apt install memcached 启动 #方式一: service memcached start ...

  6. Date时间格式比较大小

    方法一: 两个Date类型的变量可以通过compareTo方法来比较.此方法的描述是这样的:如果参数 Date 等于此 Date,则返回值 0:如果此 Date 在 Date 参数之前,则返回小于 0 ...

  7. NandFlash、NorFlash、DataFlash、SDRAM释义

    1. NandFlash和NorFlash       Flash存储芯片,俗称闪存,因其具有非易失性.可擦除性.可重复编程及高密度.低功耗等特点,广泛地应用于手机.数码相机.笔记本电脑等产品.    ...

  8. typora快捷键之速成笔记

    使用心得:用起来相当的顺手,强烈推荐小伙伴使用该工具,内置快捷功能很贴心 工具下载: https://download.csdn.net/download/lele508994993/10392197 ...

  9. soj1166. Computer Transformat(dp + 大数相加)

    1166. Computer Transformat Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description A sequenc ...

  10. HDU 2058 The sum problem 数学题

    解题报告:可以说是一个纯数学题,要用到二元一次和二元二次解方程,我们假设[a,b]这个区间的所有的数的和是N,由此,我们可以得到以下公式: (b-a+1)*(a+b) / 2 = N;很显然,这是一个 ...