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 ...
随机推荐
- ubuntu系统的软件包管理工具
ubuntu系统的软件包管理工具有两种,一种是离线管理,另一种是在线管理 1.离线管理 dpkg工具可以对本地存放的deb安装包进行安装,卸载,查看状态等. dpkg -i app_name_vers ...
- mvc 页面 去掉转义字符
mvc 页面 去掉转义字符 mvc 后台返回json数据,用ViewBag 传回前台页面,但是传到前台页面的时候,带有转义字符.一直想去掉这个转义字符,苦恼了好久. 解决方案: mvc 页面有个这 ...
- 颜色rgba、16进制、10进制互相装换
rgba转16进制: function RGBToHex(rgb){ var regexp = /[0-9]{0,3}/g; var re = rgb.match(regexp);//利用正则表达式去 ...
- go加密算法:CBC对称加密(一)--3DES/AES
其实对称加密中的:DES\3DES\AES 采取的加解密步骤一致,只是小的细节不太一样.大家多看看就能写出来了 // rsao1.go package main import ( "byte ...
- python兵器谱之re模块与正则表达式
一.正则表达式 ·1.正则表达式的应用场景: 应用特有的规则,给我需要的符合规则的字符串,在字符串中只有符合条件的才会被匹配和从大段的字符串中提取需要的数据 ·匹配字符串的规则: ·1.字符串:用户输 ...
- Java学习笔记十六:Java中的构造方法
Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...
- C语言判断字符串是否旋转过
//方法一 //每次左旋一次,判断旋转之后字符串是否与目标字符串是否一致 //旋转一圈 没有找到返回0 #define _CRT_SECURE_NO_WARNINGS #include<stdi ...
- 15-oauth2+oidc实现Server部分
1-我们使用之前项目的mvcCookieAuthSampe2进行改造 1.1 增加IdentityServer4 2-增加Config.cs文件,对IdentityServer提供相关的配置数据 u ...
- vue生命周期和react生命周期对比
一 vue的生命周期如下图所示(很清晰)初始化.编译.更新.销毁 二 vue生命周期的栗子 注意触发vue的created事件以后,this便指向vue实例,这点很重要 <!DOCTYPE ht ...
- 笔记-django- HttpRequest/Response
笔记-django- HttpRequest/Response 1. HttpRequest/Response When a page is requested, Django create ...