20144303 第三次实验
北京电子科技学院(BESTI)实验报告
课程:Java程序设计
班级:1453
姓名:石宇森
指导教师:娄嘉鹏
实验日期:2016.04.22
实验名称:Java开发环境的熟悉(Linux + Eclipse)
实验内容:
XP基础
XP核心实践
相关工具
实验目的与要求:
没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验步骤:
敏捷开发与XP
两个公式:软件=程序+软件工程和软件企业=软件+商业模式
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。
XP团队使用现场客户、特殊计划方法和持续测试来提供快速的反馈和全面的交流:
XP是以开发符合客户需要的软件为目标而产生的一种方法论
XP是一种以实践为基础的软件工程过程和思想
XP认为代码质量的重要程度超出人们一般所认为的程度
XP特别适合于小型的有责任心的、自觉自励的团队开发需求不确定或者迅速变化的软件
XP准则:沟通、简单、反馈、勇气
XP法则:快速反馈、假设简单性、递增更改、提倡更改、优质工作
XP活动:编码、测试、倾听、设计
XP实践:编码标准、结对编程、代码集体所有、测试、重构等实践
编码标准:
编写代码一个重要的认识是“程序大多时候是给人看的”,编程标准使代码更容易阅读和理解,甚至可以保证其中的错误更少。编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
程序的缩进方法:我们单击Eclipse菜单中的source->Format 或用快捷键Ctrl+Shift+F就可以按Eclipse规定的规范缩进。
结对编程:
结对编程中有两个角色:
驾驶员(Driver)是控制键盘输入的人。写设计文档,进行编码和单元测试等XP开发流程。
领航员(Navigator)起到领航、提醒的作用。审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
一、git的使用:
要先下载同组成员的java文件,然后修改之后再上传。
我们先打开同组成员的项目,复制其网址:
在桌面右键,点git bash here ,输入git clone +项目组地址:
此时,桌面会出现项目组文件夹:
打开文件夹,把要修改的java文件修改之后,放入该项目组文件夹:
在该文件夹中右键,点击git bash here,开始将修改后的java文件传上去:
这时,git@osc中对应的项目组中也就多了一个文件,上传成功:
二、eclipse的重构过程:
源代码:
import java.util.Scanner;
public class MyUtil {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String write="";
char[] mid=new char[100];
int[] code=new int[100];
int time=0;
int i=0;
System.out.println("请输入明文");
write=scanner.nextLine();
time=write.length();
for( i=0;i<time;i++){
mid[i]=write.charAt(i);
code[i]=((int)mid[i]-'a'+3)%26+'a';
}
System.out.println("密文为:");
for( i=0;i<time;i++){
System.out.printf("%c",(char)code[i]);
}
}
}
重构后的代码:
class Caesar{
public static char[] mid=new char[100];
public static int[] code=new int[100];
public static int time=0;
public static int i=0;
public static void EncryptWrite(String write){
time=write.length();
for( i=0;i<time;i++){
mid[i]=write.charAt(i);
code[i]=((int)mid[i]-'a'+3)%26+'a';
}
System.out.println("密文为:");
for( i=0;i<time;i++){
System.out.printf("%c",(char)code[i]);
}
}
}
public class MyUtil {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String write="";
System.out.println("请输入明文");
write=scanner.nextLine();
Caesar.EncryptWrite(write);
}
}