2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告
实验要求
- 没有Linux基础的同学建议先学习《Linux基础入门(新版)》《Vim编辑器》 课程
- 完成实验、撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等)、解决办法(空洞的方法如“查网络”、“问同学”、“看书”等一律得0分)以及分析(从中可以得到什么启示,有什么收获,教训等)。报告可以参考范飞龙老师的指导
- 严禁抄袭,有该行为者实验成绩归零,并附加其他惩罚措施。
实验步骤
(一)编码标准
编程标准
- 具有说明性的名字
- 清晰的表达式
- 直截了当的控制流
- 可读的代码和注释
- 实现这些内容时一致所使用某些规则和惯用法
安装alibaba插件
打开
Settings ->Plugins
在搜索框输入alibaba即可看到Alibaba Java Code Guidelines插件,点击Install进行安装,然后重启IDE生效:

使用:在项目名称上单击右键,在弹出菜单上选择编码规约扫描:

出现下图内容,不规范的地方,有中文提示并且定位到了行,alibaba把问题分为block/critical/major三个等级,有些规则可以一键修复。我才发现自己的代码问题这么多。。。

代码出现的规范问题
在if/else/for/while/do语句中必须使用大括号,即使只有一行代码,避免使用
if(conditions)statement;所有的覆写方法,必须加@Override注解,例如,
getObject()与get0bject()的问题,一个是字母O,一个是数字0,加@Override可以准确判断是否覆盖成功,另外,如果过在抽象类中对方法签名进行修改,其实现类会马上编译报错。抽象类命名使用Abstract或Base开头
方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase,必须遵循驼峰形式,为此还学会了如何批量修改变量名.在变量名上进行rename操作,所有的同名变量都会自动更改。快捷键:
ALT+SHIFT+R

不允许任何未定义的常量直接出现在代码中。
所有类都必须添加创建者信息
规范后的代码
/**
* CodeStandard
*
* @author HY20175205
* @date 2019/4/28
*/
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());
int n = 20;
if (buffer.capacity() < n){
buffer.append("1234567");
}
for (int i = 0; i < buffer.length(); i++){
System.out.println(buffer.charAt(i));
}
}
}
code菜单
Override Methods ( 重写覆盖方法 ) Ctrl + O
Implements Methods ( 实现接口方法 ) Ctrl + I

Gengrate ( 用于生成Construct、Getter/Setter、toString等) Alt + Insert
Surround With (使用if-else、for、while等语句包装代码段) Ctrl+Alt+T

SmartType ( 智能选择并实现 ) Ctrl + Shift + 空格
Cyclic Expand Word ( 循环往上选择单词 ) Alt + /
Cyclic Expand Word (Backwrad)( 循环往下选择单词 ) Alt + Shift + /
Expand ( 方法展开 ) Ctrl + 加号
Collapse ( 方法折叠 ) Ctrl + 减号
Expand Recursively ( 同上,方法展开 ) Ctrl + Alt + 加号
Collapse Recursively ( 同上,方法折叠 ) Ctrl + Alt + 减号
Expand All ( 全部方法展开 ) Ctrl + Shift + 加号
Collapse All ( 全部方法折叠 ) Ctrl + Shift + 减号
Expand doc comments ( 展开Java doc注释 )
Collapse doc comments ( 折叠Java doc注释 )
Insert Live Template ( 选择Live Templates模板 ) Ctrl + J
Surround with Live Template ( 选择Live Templates模板 ) Ctrl + Alt + J
Comment with Line Comment ( 行注释 ) Ctrl + /

Comment with Block Comment ( 块注释 ) Ctrl + Shift + /

Reformat Code ( 格式化代码 ) Ctrl + Alt + L
Show Reformat File Dialog ( 弹出格式化弹框 ) Ctrl + Alt + Shift + L
Optimize Imports ( 去除未引用的包导入声明 ) Ctrl + Alt + O
Rearrange Code ( 重新整理代码 )
代码标准中很重要的一项是如何给包、类、变量、方法等标识符命名,Java中的一般的命名规则有:
- 要体现各自的含义
- 包、类、变量用名词
- 方法名用动宾
- 包名全部小写,如:io,awt
- 类名第一个字母要大写,如:
HelloWorldApp - 变量名第一个字母要小写,如:
userName - 方法名第一个字母要小写:
setName
标识符名字应当直观且可以拼读
标识符的长度,一般全局变量用具有说明性的名字,局部变量用短名字:单字符的名字,常见的如i,j,k等用作局部变量。
(二)版本控制
- 版本控制提供项目级的 undo(撤销) 功能,不至于因为失误而重头再来
- 版本控制允许多人在同一代码上工作, 不会发生诸如一个人覆盖了另一个人编辑的代码,导致那个人的修改无效这样的情况。
- 版本控制系统保存了过去所作的修改的历史记录。
- 版本控制系统还支持在主线上开发的同时发布多个软件版本。
- 版本控制也是项目级的时间机器,你可以选择任何一个时间, 精确地查看项目在当时的情况。
(三)重构
- 概念:重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。
- 修改软件的四种动机:
- 增加新功能
- 原有功能有BUG
- 改善原有程序的结构
- 优化原有系统的性能
- 需要重构的地方
- 代码重复
- 方法过长
- 参数列过长
- 条件逻辑过度复杂
- 分支语句
- 一个完整的重构流程应包括
- 从版本控制系统代码库中Check out code
- 读懂代码(包括测试代码)
- 发现bad smell
- Refactoring
- 运行所有的Unit Tests
- 往代码库中Check in code
(四)下载搭档的代码,至少进行三项重构
在码云上把自己的学习搭档加入自己的项目中
- 管理 -> 添加仓库成员 -> 邀请用户

- 管理 -> 添加仓库成员 -> 邀请用户
搭档的Complex代码

重构1:所有类都必须添加创建者信息

重构2:所有的覆写方法,必须加@Override注解

重构3:方法名,参数名,成员变量,局部变量都统一使用lowerCamelCase

重构4:在if/else/for/while/do语句中必须使用大括号,即使只有一行代码

码云链接
总结
本次实验学习的内容是如何写出更规范的代码,以前的写程序的过程中经常忽略这一点,往往认为只要运行结果正确的代码就是完整的好代码,经过这次实验我发现,代码往往是给别人看的,添加一些必要的解释说明和格式规范使自己的程序更加容易让别人理解,而且自己再回头查阅的时候也不至于抓不住重点。
参考
2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告的更多相关文章
- 20175314 实验三 敏捷开发与XP实践
20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...
- 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告
20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...
- 2017-2018-2 20165228 实验三《敏捷开发与XP实践》实验报告
2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键 ...
- 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告
2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...
- 2018-2019-2 20175217 实验三《敏捷开发与XP实践》实验报告
一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吴一凡 学号:20175217 指导教师:娄嘉鹏 实验日期:2019年4月25日 实验时间:--- 实验序号:实验三 实验名称:敏捷开 ...
- 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》
2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...
- #实验三 敏捷开发与XP实践---实验报告
一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...
- 20165223 实验三 敏捷开发与XP实践
目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...
- 2017-2018-2 20165231 实验三 敏捷开发与XP实践
实验报告封面 课程:Java程序设计 班级:1652班 姓名:王杨鸿永 学号:20165231 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:15:25 - 17:15 实验序号:实验三 ...
随机推荐
- Hibernate 双向一对多映射
附代码: public class Order { private Integer id; private String OrderName; private Customer customer; p ...
- Django中Q搜索的简单应用
本节涉及: 1.Q搜索在前后端的设计 2.Django中Queryset对象的序列化(由后端扔给前端的数据必然会经过序列化) 3.前端动态地构造表格以便显示(动态创建DOM对象) 思路: 用户通过前端 ...
- python开发之virtualenv与virtualenvwrapper讲解
在使用 Python 开发的过程中,工程一多,难免会碰到不同的工程依赖不同版本的库的问题: 亦或者是在开发过程中不想让物理环境里充斥各种各样的库,引发未来的依赖灾难. 此时,我们需要对于不同的工程使用 ...
- hook NtTerminateProcess进行应用的保护
这段时间在学习驱动,然后看到hook ssdt的代码,找了一个写的清晰的学习了一下:http://www.netfairy.net/?post=218 这里是hook NtOpenProcess,但是 ...
- C++中的Public 、Private、Protected 区别
第一: private,public,protected的访问范围: private: 只能由该类的成员函数.友元的成员函数访问,不能被其他类的成员函数访问,即使是该类的对象也不能直接访问 publi ...
- mysql新特性
5.7新特性 sys库 document store X protocol json支持 空间数据 虚拟列 query rewrite plugin 表空间传输 innodb undo表空间 表空间管 ...
- Linux和Shell教程
文档资料参考: 参考:http://www.runoob.com/linux/linux-tutorial.html 软件下载参考: centos 下载地址:https://www.centos.or ...
- RoR - More Active Record
Active Record Scope: default_scope: 默认的检索方式 #Use unscoped to break out of the default class Hobby ...
- jmeter断言接口响应字段大小
一,有时候断言需要判断接口返回某个字段值是否大于或者小于预期值,此时断言需要用到BeanShell断言 写法如下: import com.alibaba.fastjson.JSONObject; // ...
- jeecg富文本编辑器增加字体(仿宋)
jeecg富文本编辑器增加字体(仿宋) 温馨提示:jeecg 提供了 uedit 富文本的实现,如下针对的是 uedit 增加仿宋字体示例. 主要修改三个文件:plug-in\ueditor\uedi ...