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菜单

    1. Override Methods ( 重写覆盖方法 ) Ctrl + O

    2. Implements Methods ( 实现接口方法 ) Ctrl + I

    3. Gengrate ( 用于生成Construct、Getter/Setter、toString等) Alt + Insert

    4. Surround With (使用if-else、for、while等语句包装代码段) Ctrl+Alt+T

    5. SmartType ( 智能选择并实现 ) Ctrl + Shift + 空格

    6. Cyclic Expand Word ( 循环往上选择单词 ) Alt + /

    7. Cyclic Expand Word (Backwrad)( 循环往下选择单词 ) Alt + Shift + /

    8. Expand ( 方法展开 ) Ctrl + 加号

    9. Collapse ( 方法折叠 ) Ctrl + 减号

    10. Expand Recursively ( 同上,方法展开 ) Ctrl + Alt + 加号

    11. Collapse Recursively ( 同上,方法折叠 ) Ctrl + Alt + 减号

    12. Expand All ( 全部方法展开 ) Ctrl + Shift + 加号

    13. Collapse All ( 全部方法折叠 ) Ctrl + Shift + 减号

    14. Expand doc comments ( 展开Java doc注释 )

    15. Collapse doc comments ( 折叠Java doc注释 )

    16. Insert Live Template ( 选择Live Templates模板 ) Ctrl + J

    17. Surround with Live Template ( 选择Live Templates模板 ) Ctrl + Alt + J

    18. Comment with Line Comment ( 行注释 ) Ctrl + /

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

    20. Reformat Code ( 格式化代码 ) Ctrl + Alt + L

    21. Show Reformat File Dialog ( 弹出格式化弹框 ) Ctrl + Alt + Shift + L

    22. Optimize Imports ( 去除未引用的包导入声明 ) Ctrl + Alt + O

    23. 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语句中必须使用大括号,即使只有一行代码


码云链接


总结

本次实验学习的内容是如何写出更规范的代码,以前的写程序的过程中经常忽略这一点,往往认为只要运行结果正确的代码就是完整的好代码,经过这次实验我发现,代码往往是给别人看的,添加一些必要的解释说明和格式规范使自己的程序更加容易让别人理解,而且自己再回头查阅的时候也不至于抓不住重点。


参考

Code篇

2018-2019-20175205 实验三敏捷开发与XP实践《Java开发环境的熟悉》实验报告的更多相关文章

  1. 20175314 实验三 敏捷开发与XP实践

    20175314 实验二 Java面向对象程序设计 一.实验内容 XP基础 XP核心实践 相关工具 二.实验步骤 (一)代码格式化 创建"175314.exp3"项目,在该项目下创 ...

  2. 20165230 《Java程序设计》实验三 敏捷开发与XP实践 实验报告

    20165230 <Java程序设计>实验三 敏捷开发与XP实践 实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:田坤烨 学号:20165230 成绩: 指导教 ...

  3. 2017-2018-2 20165228 实验三《敏捷开发与XP实践》实验报告

    2017-2018-2 20165228 实验三<敏捷开发与XP实践>实验报告 相关知识点 (一)敏捷开发与XP 通过 XP准则来表达: 沟通 :XP认为项目成员之间的沟通是项目成功的关键 ...

  4. 2016-2017-2 20155339 《Java面向对象程序设计》实验三敏捷开发与XP实践实验报告

    2016-2017-2 20155339 <Java面向对象程序设计>实验三敏捷开发与XP实践实验报告 实验内容 XP基础 XP核心实践 相关工具 实验内容 一.在IDEA中使用工具(Co ...

  5. 2018-2019-2 20175217 实验三《敏捷开发与XP实践》实验报告

    一.实验报告封面 课程:Java程序设计 班级:1752班 姓名:吴一凡 学号:20175217 指导教师:娄嘉鹏 实验日期:2019年4月25日 实验时间:--- 实验序号:实验三 实验名称:敏捷开 ...

  6. 2018-2019-2 20175227张雪莹《Java程序设计》实验三 《敏捷开发与XP实践》

    2018-2019-2 20175227张雪莹<Java程序设计> 实验三 <敏捷开发与XP实践> 实验报告封面 课程:Java程序设计 班级:1752班 姓名:张雪莹 学号: ...

  7. #实验三 敏捷开发与XP实践---实验报告

    一.实验三 敏捷开发与XP实践-1 1.实验要求 -实验三 敏捷开发与XP实践 http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成I ...

  8. 20165223 实验三 敏捷开发与XP实践

    目录 一.实验报告封面 二.具体实验内容 (一)敏捷开发与XP实践-1 代码规范格式化 (二)敏捷开发与XP实践-2 添加搭档项目 (三)敏捷开发与XP实践-3 搭档代码重构 (四)敏捷开发与XP实践 ...

  9. 2017-2018-2 20165231 实验三 敏捷开发与XP实践

    实验报告封面 课程:Java程序设计 班级:1652班 姓名:王杨鸿永 学号:20165231 指导教师:娄嘉鹏 实验日期:2018年4月28日 实验时间:15:25 - 17:15 实验序号:实验三 ...

随机推荐

  1. Hibernate 双向一对多映射

    附代码: public class Order { private Integer id; private String OrderName; private Customer customer; p ...

  2. 一种常见的maven打包后同名文件冲突错误

    在使用一些开源框架的时候(比如spark.hadoop.lucene等),偶尔会见到说找不到某个具体实现类或者某个配置(比如spark的akka配置)不见了. 部分例子如下: [Lucene]An S ...

  3. [LeetCode] Largest Triangle Area 最大的三角区域

    You have a list of points in the plane. Return the area of the largest triangle that can be formed b ...

  4. [LeetCode] Max Increase to Keep City Skyline 保持城市天际线的最大增高

    In a 2 dimensional array grid, each value grid[i][j] represents the height of a building located the ...

  5. 6.3 Pandora 实操 - 数据立方

    简介 数据立方是适用于大规模实时数据(每天百亿条,10TB+ 级别数据)查询与分析的数据库系统,提供交互式的访问数据的能力,支持数据过滤.分组.聚合,实现亚秒级以内对亿行级别的数据表进行多维探索分析. ...

  6. P2678 跳石头---(二分答案)

    题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 NNN 块岩石 ...

  7. Java是如何加载资源文件的?(源码解毒)

    上文提到应老板要求开发一个测试工具能方便的加载存于文件中的测试参数,当时考虑既然是测试,把测试参数文件和测试类放在一起岂不是很方便,但是老板说:我的需求是你把测试参数文件放到统一文件夹下比如resou ...

  8. SEED实验——Environment Variable and Set-UID Program实验描述与实验任务

    第一部分:实验描述 该实验的学习任务是理解环境变量是如何影响程序和系统行为的.环境变量是一组动态命名的变量 第二部分:实验任务 2.1 任务一:操作环境变量 在这个任务中,我们研究可以用来设置和取消设 ...

  9. python菜鸟学习心得

    禁忌:学习没精力,就是没精打采.没有热情. 禁忌:学习一半,然后,放在一边. 禁忌:不要东一榔头,西一棒锤. 禁忌:学习要用心. 激情是动力,专注是效率 每次学习都是绕着网络转了一圈.还是要一步一个脚 ...

  10. maven打包忽略静态资源解决办法,dispatchServlet拦截静态资源请求的解决办法

    问题: maven 打包时,有的文件打不进去target 解决: 因为maven打包默认打Java文件.在项目中的pom文件中加build标签 <build> <resources& ...