20145206《Java程序设计》实验三实验报告
20145206《Java程序设计》实验三实验报告
实验内容
- XP基础
- XP核心实践
- 相关工具
实验步骤
(一)敏捷开发与XP
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
一个常见的公式是:软件工程=开发流程+工具
敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。其中,极限编程(eXtreme Programming,XP)是一种全新而快捷的软件开发方法。
一项实践在XP环境中成功使用的依据通过XP的法则呈现,包括:快速反馈、假设简单性、递增更改、提倡更改、优质工作。
XP软件开发的基石是XP的活动,包括:编码、测试、倾听、设计。
(二)编码标准
编程标准包含:具有说明性的名字、清晰的表达式、直截了当的控制流、可读的代码和注释,以及在追求这些内容时一致地使用某些规则和惯用法的重要性。
程序没有最基本的缩进,让人读起来很费劲,这个问题在Eclipse中比较容易解决:
处理之前:
我们单击Eclipse菜单中的source->Format处理之后:
Java中的一般的命名规则有:
·要体现各自的含义
·包、类、变量用名词
·方法名用动宾
·包名全部小写,如:io,awt
·类名第一个字母要大写,如:HelloWorldApp
·变量名第一个字母要小写,如:userName
·方法名第一个字母要小写:setName
·...
标识符名字应当直观且可以拼读,可望文知意,不必进行“解码”,一般采用英文单词或其组合,便于记忆和阅读,切忌使用汉语拼音来命名。
标识符的长度“min-length && max-information”的原则,可以通过去元音法把变量名变短,一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。
(三)结对编程
结对编程中有两个角色:
·驾驶员(Driver)是控制键盘输入的人。
·领航员(Navigator)起到领航、提醒的作用。
如何结对编程,为何要结对编程,重点是:
·驾驶员:写设计文档,进行编码和单元测试等XP开发流程。
·领航员:审阅驾驶员的文档、驾驶员对编码等开发流程的执行;考虑单元测试的覆盖率;思考是否需要和如何重构;帮助驾驶员解决具体的技术问题。
·驾驶员和领航员不断轮换角色,不要连续工作超过一小时,每工作一小时休息15分钟。领航员要控制时间。
·主动参与。任何一个任务都首先是两个人的责任,也是所有人的责任。没有“我的代码”、“你的代码”或“他/她的代码”,只有“我们的代码”。
·只有水平上的差距,没有级别上的差异。两人结对,尽管可能大家的级别资历不同,但不管在分析、设计或编码上,双方都拥有平等的决策权利。
(四)版本控制
XP的集体所有制意味着每个人都对所有的代码负责;这一点,反过来又意味着每个人都可以更改代码的任意部分。这意味着代码要放到一个大家都能方便获取的地方,我们叫代码仓库。
版本控制提供了很多好处:
·版本控制提供项目级的 undo(撤销) 功能;
·版本控制允许多人在同一代码上工作, 只要遵守一定的控制原则就行;
·版本控制系统保存了过去所作的修改的历史记录;
·版本控制系统还支持在主线上开发的同时发布多个软件版本;
·版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况;
由于对git不是很熟悉,所以学习了一下git教程:
最终,HelloWorld推送成功!
(五)重构
重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
一个完整的重构流程包括:
·从版本控制系统代码库中Check out code
·读懂代码(包括测试代码)
·发现bad smell
·Refactoring
·运行所有的Unit Tests
·往代码库中Check in code
(六)实践项目
和结对同学完成实验,她把实验一的代码上传至git,我进行下载。
重构过程:
给类、包、方法、变量改名字。
重构完效果如下:
队友把我的实验一代码进行下载并修改,完成结对编程。
实验中遇到的问题及解决过程
问题1:在托送代码时,不知道如何能一次推送多个.java,是一个一个.java文件名敲上去吗?
解决过程:通过询问同学得知需要哪个文件就可以敲哪个上去,也可以直接传整个文件夹的内容,只要敲上文件夹的名字就可以。
问题2:在下载结对同学的代码时,只能下载对方的文件夹,不能做到只下载一个.java文件,这样就会很不方便,我们尝试着下载其中一个文件,但是没有成功,我觉得一定是有办法的,只是我们还没有找到。
解决过程:未解决。
实验体会与感悟
本次实验采用了新的形式,即两个同学一组完成实验,让我体会到了合作的重要性,两个人要分工明确,刚开始我和合作的小伙伴对于git的操作不是很熟悉,于是我们通过学习教程以及询问同学弄懂了git,并且尝试着上传了一些代码(比如helloworld),然后我们把自己实验的代码上传,并且让对方进行下载,修改对方的代码,再进行上传,这个过程我觉得是互相学习的过程,可以知道自己原来的代码有什么不足之处,也可以了解对方对于自己代码有什么想法、思路,对于我们今后的学习是很有好处的,一项工作的完成通常都不是一个人努力的结果,而是团队合作,这体现了合作的重要性,所以我们对于这方面能力的培养也不容忽视。
PSP时间
步骤 | 耗时 | 百分比 |
---|---|---|
需求分析 | 30min | 25% |
设计 | 30min | 25% |
代码实现 | 20min | 16.7% |
测试 | 20min | 16.7% |
分析总结 | 20min | 16.7% |
对方博客链接
http://www.cnblogs.com/schwarizard/
参考资料
20145206《Java程序设计》实验三实验报告的更多相关文章
- 20145120 《Java程序设计》实验三实验报告
20145120 <Java程序设计>实验三实验报告 实验名称:敏捷开发与XP实践 实验目的与要求: XP基础 XP核心实践 相关工具 (一)敏捷开发与XP 极限编程(eXtreme Pr ...
- 20155206 《Java程序设计》实验三实验报告
20155206 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 提交一: 提交二: 提交三: 提交四:
- 20155232 《Java程序设计》实验三实验报告
20155232 <Java程序设计>实验三实验报告 实验内容 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发(Agile ...
- 20145303《Java程序设计》实验三实验报告
20145303<Java程序设计>实验三实验报告 ssh公钥配置及git安装: eclipse中git配置: 队友链接: http://www.cnblogs.com/5321z/p/5 ...
- 20145328 《Java程序设计》实验三实验报告
20145328 <Java程序设计>实验三实验报告 实验名称 Java敏捷开发与XP实践 实验内容 XP基础 XP核心实践 相关工具 实验步骤 (一)敏捷开发与XP 敏捷开发是一种以人为 ...
- 20145236 《Java程序设计》实验三实验报告
实验三实验报告 和张亚军同学一组: 实验三实验报告
- 20144303 《Java程序设计》第一次实验实验报告
20144303 <Java程序设计>第一次实验实验报告 北京电子科技学院(besti)实验报告 课程:java程序设计 班级:1453 指导教师:娄嘉鹏 实验日期:2016.04.08 ...
- 20145240 《Java程序设计》第一次实验报告
20145240 <Java程序设计>第一次实验报告 实验内容 一.命令行下java程序开发 1.建立Code目录,输入mkdir 20145240命令建立实验目录,并使用dir命令查看目 ...
- 20145330《Java程序设计》第一次实验报告
20145330<Java程序设计>第一次实验报告 实验一Java开发环境的熟悉 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Ja ...
随机推荐
- C#GDI+编程基础(一:Graphics画布类)
GDI+存在的意义:将变成与具体硬件实现细节分开. GDI+步骤:获取画布,绘制图像.处理图像 命名空间: using System.Drawing;//提供对GDI+基本图形功能的访问 using ...
- 移动端全屏滑动的小插件,简单,轻便,好用,只有3k swiper,myswiper,page,stage
https://github.com/donglegend/mySwiper mySwiper 移动端全屏滑动的小插件,简单,轻便,好用,只有3k 下载 直接下载 bower install mySw ...
- 通过NavMeshObstacle解决NavMesh防卡
http://www.unity蛮牛.com/thread-33383-1-1.html. 许久未曾发帖了,最近忙于换工作的问题,经常处于纠结状态,so...偶尔上蛮牛还能看到大家对我的支持,感觉还是 ...
- Longest Common Substring
Given two strings, find the longest common substring. Return the length of it. Example Given A = &qu ...
- Pythhon 字典 key in dict 比 dict.has_key (key)效率高 为什么?
has_key是去取key对应的值,时间复杂度在最优情况下为O(1); in 是直接去dict.__contains__这个保存这key的list中去获取,相当与是去数组中获取. 所以in 比has_ ...
- spring mvc 页面编码和数据库编码 中文出现乱码
1.前台与后台交互的时候,后台获取的中文为乱码,而且插入数据库数据也为乱码. 修改web.xml 添加编码的过滤器,全部设置为utf-8(注意加上forceEncoding) <filter&g ...
- windows添加linux 启动引导项
需要软件: EasyBCD 下载地址: http://pan.baidu.com/s/1c20v1GO 在windows 下安装上述软件. 然后打开,语言的话现在中文即可. 可以看到如下画面: 1.选 ...
- mysql+mybatis+存储过程+事务 + 多并发流水号获取
数据库存储过程 drop PROCEDURE generate_serial_number; CREATE PROCEDURE generate_serial_number( ), IN param_ ...
- neutron的基本原理
neutron是openstack的一个重要模块,也是比较难以理解和debug的模块之一. 我这里安装如图安装了经典的三个节点的Havana的Openstack 图1 分三个网络: Externa ...
- poj 1442
一个排序的题目. 题意:给你m个数a[m],和n个数b[n]. 首先a[0]….a[b[0]]排序.输出第一个数. 然后a[0]….a[b[1]]排序.输出第二个数. 以此类推,直到输出第n个数. 思 ...