20145214实验三 敏捷开发与XP实践
20145214实验三 敏捷开发与XP实践
XP准则
沟通 :XP认为项目成员之间的沟通是项目成功的关键,并把沟通看作项目中间协调与合作的主要推动因素。
简单 :XP假定未来不能可靠地预测,在现在考虑它从经济上是不明智的,所以不应该过多考虑未来的问题而是应该集中力量解决燃眉之急。
反馈 :XP认为系统本身及其代码是报告系统开发进度和状态的可靠依据。系统开发状态的反馈可以作为一种确定系统开发进度和决定系统下一步开发方向的手段。
勇气:代表了XP认为人是软件开发中最重要的一个方面的观点。在一个软件产品的开发中人的参与贯穿其整个生命周期,是人的勇气来排除困境,让团队把局部的最优抛之脑后,达到更重大的目标。表明了XP对“人让项目取得成功”的基本信任态度。
软件开发的活动:编码、测试、倾听、设计。其中的编码标准,结对编程,代码集体所有,测试,重构等实践过程较为重要。
编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
Java中的一般的命名规则有:
(1)要体现各自的含义
(2)包、类、变量用名词
(3)方法名用动宾
(4)包名全部小写,如:io,awt
(5)类名第一个字母要大写,如:HelloWorldApp
(6)变量名第一个字母要小写,如:userName
(7)方法名第一个字母要小写:setName
标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名,用词要准确
标识符的长度“min-length && max-information”的原则,比如:maxVal 比 maxValueUntilOverflow要好些,可以通过去元音法把变量名变短,如returnValue->rtnVal ,message->msg;一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。
版本控制
1、下载并安装好git,在cmd中输入git指令

2、在命令行下模式下给git配置用户名和邮箱

3、在当前文件夹右键选择 git bush here ,输入 git add . 把要提交的文件的信息添加到索引库中

4、输入 git commit -m 命令,将代码在本地环境下提交

5、输入 ssh -T git@git.oschina.net 检测联通性

6、输入 git push origin master 将代码提交至开源中国

结对编程
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更。
一个完整的重构流程包括:
从版本控制系统代码库中Check out code
读懂代码(包括测试代码)
发现bad smell
Refactoring
运行所有的Unit Tests
往代码库中Check in code
1、将结对伙伴添加到项目中,作为开发者。我的结对伙伴是:20145219宋歌

2、自己编写的代码成功上传后,对方下载后进行修改。
3、下载对方的代码。

4、修改对方的代码,重复此过程。

5、最后,用Junit进行测试。

6、运行最后的代码。

重构
1、重新编写之前学过的角色扮演游戏代码。编写代码时,由于设置的类名称和代码中不同,出现错误。

2、用
Refactor中的Rename重构。

3、用
Refactor中的Encapsulate Field...再次重构。

4、继续用
Extract Method...对最后输出信息的语句进行重构。

5、在
Code中选择Generate,给Role类产生一个toString方法

6、重构后的代码及运行结果如下。
class Role {
private String name;
private int level;
private int blood;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
public int getBlood() {
return blood;
}
public void setBlood(int blood) {
this.blood = blood;
}
@Override
public String toString() {
return "Role{" +
"name='" + name + '\'' +
", level=" + level +
", blood=" + blood +
'}';
}
}
public class RoleTest{
public static void main(String[] args){
Role role = new Role();
role.setName("Swordsman");
role.setLevel(1);
role.setBlood(200);
System.out.println("角色信息:名称:" + role.getName() + "等级:" + role.getLevel() + "血量:" + role.getBlood());
}
}

产生的问题及解决
问题1
在在命令行下模式下给git配置用户名和邮箱后想要添加公钥时,仍然用命令行进行,结果提示错误。

结合之前进行git公钥添加的经验发现应该用右键的Git Bush here进行添加,并且因为已经有过一个公钥,所以不用再次添加,只需要提交代码即可。

问题2
下载对方代码时出现错误。

询问同学后发现需要新建一个文件夹,新建后再Git Bash就可以成功。
我的PSP时间
| 步骤 | 耗时 | 百分比 |
|---|---|---|
| 需求分析 | 10min | 12.5 |
| 设计 | 20min | 25 |
| 代码实现 | 20min | 25 |
| 测试 | 20min | 25 |
| 分析总结 | 10min | 12.5 |
实验心得
通过结对项目,我认识到了合作的重要性,紧密的合作能够提高我们的能力。代码测试过程中出现很多错误,但经过互相的合作和探讨,加以改进,便成功运行。我通过这次实验也学了这些非常有用的知识,如敏捷开发与xp的具体知识,编码标准的学习,结对编程的具体过程,版本控制,重构,怎么使用git等,主要是学到了如何规范化一个程序,总之我在这次的实践中收获很多。
20145214实验三 敏捷开发与XP实践的更多相关文章
- 20145219 《Java程序设计》实验三 敏捷开发与XP实践
20145219 <Java程序设计>实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 敏捷开发与XP 1.敏捷开发(Agile Development)是 ...
- 20145213《Java程序设计》实验三敏捷开发与XP实践
20145213<Java程序设计>实验三敏捷开发与XP实践 实验要求 1.XP基础 2.XP核心实践 3.相关工具 实验内容 1.敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法 ...
- 20145308刘昊阳 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20145308刘昊阳 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 实验名称 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 统计的PSP(Personal ...
- JAVA课程实验报告 实验三 敏捷开发与XP实践
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:韩玉琪 学号:20135317 成绩: 指导教师:娄嘉 ...
- 20145225《Java程序设计》 实验三 "敏捷开发与XP实践"
20145225<Java程序设计> 实验三 "敏捷开发与XP实践" 实验报告 实验内容 使用 git 上传代码 使用 git 相互更改代码 实现代码的重载 git 上 ...
- 20145215实验三 敏捷开发与XP实践
20145215实验三 敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.软 ...
- 20145325张梓靖 实验三 "敏捷开发与XP实践"
20145325张梓靖 实验三 "敏捷开发与XP实践" 程序设计过程 实验内容 使用 git 上传代码 git上传中遇到的问题 使用 git 相互更改代码 实现代码的重构 git ...
- 20162311 实验三 敏捷开发与XP实践 实验报告
20162311 实验三 敏捷开发与XP实践 实验报告 实验内容 一.研究学习IDEA中的Code菜单 使用Code ->Reformate Code功能将以下代码格式化 public clas ...
- 2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践<Java开发环境的熟悉>实验报告 实验要求 没有Linux基础的同学建议先学习<Linux基础入门(新版)>&l ...
随机推荐
- mysql 支持四字节设置
设置文件mysql/bin/my.ini[mac用户在ect文件夹里创建文件my.cnf] 添加以下代码: [mysqld] character-set-server=utf8mb4
- Virtualization state: Optimized (version 7.4 installed)
[Virtualization state: Optimized (version 7.4 installed)] [root@localhost ~]# cd /mnt/ [root@localho ...
- Eclipse中html/js/jsp代码的自动联想
1.打开eclipse→Windows→Preferences→Java→Editor→Content Assist 修改Auto Activation triggers for java的值为:.a ...
- 浅谈ETL架构中ODS的作用以及如何在HaoheDI中自动创建ODS表
什么是ODS表? 在ETL架构中,源数据很少会直接抽取加载到数据仓库EDW,二者之间往往会设置一个源数据的临时存储区域,存储数据在清洗转换前的原始形态,通常被大家称做操作型数据存储,简称ODS,在Ki ...
- 『Linux基础 - 4 』linux常用命令(1)
这篇笔记包含以下知识点: 几个概念的理解:Linux命令,控制台,终端, 终端提示符 对文件目录的操作的相关命令: 切换目录,列出目录下的文件等 对文件的操作的相关命令: 创建,删除,复制,修改,移动 ...
- Linux命令集锦
梳理常用的Linux命令 day1--cd命令 cd命令:(注意以下的命令,cd后均有一个空格) 1.进入盘符: cd f: 2.进入当前目录命令: cd . 3.进入指定文件夹(在进入确定盘符之后, ...
- burp实时获取token
在一些web网站里 会加入token来限制用户的一些操作 如果用户的请求里面没有这个token 那么我们的一些操作就会很麻烦 现在 我来演示一下burp如何自动更新token 首先 需要dvwa ...
- BAPC 2014 Preliminary
// 题目链接: https://nanti.jisuanke.com/t/282041 //动态规划,重复利用子问题的最优,来求解当前最优问题 #include <iostream> # ...
- js闭包的理解-目前网上分析的最透彻文章
js的闭包对于大家实际上并不陌生,但是真正敢说自己完全理解的人并不多.笔者在网上看到分析闭包的文章非常多,篇幅用的非常多,但是实际上分析的并不到位,或者根本就是不正确的.我有时候都在想,写这些文章的人 ...
- Nginx初体验(一):nginx介绍
今天我们来介绍一下Nginx. Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件(IMAP/POP3)代理服务器 特点: 反向代理,负载均衡,动静分离 首先我们来介绍一下正向代理服务器 ...