当前位置: 首页 > news >正文

20165301陈潭飞2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

2017-2018-2 20165301 实验三《Java面向对象程序设计》实验报告

1296455-20180427180657239-776483678.png

一、敏捷开发与XP实践-1

实验要求:
  • 在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Code菜单,找出一项让自己感觉最好用的功能。提交截图,加上自己学号水印。
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());
if(buffer.capacity()<20)
buffer.append("1234567");
for(int i=0; i<buffer.length();i++)
System.out.println(buffer.charAt(i));
}
}
实验截图
  • 在IDEA中点击setting---Plugins---Brows Repositories,搜索alibabba并下载

1296455-20180427180911741-24212988.png

  • 在项目上右击选择编码规约扫描

1296455-20180427181342948-2006646081.png

  • 格式化之前

1296455-20180427181559351-1920473363.png

  • 格式化之后

1296455-20180427181625867-489816490.png

  • 使用code->Reformat对齐后

1296455-20180427181946962-1692358547.png

二、敏捷开发与XP实践-2

实验要求
  • 在码云上把自己的学习搭档加入自己的项目中,确认搭档的项目加入自己后,下载搭档实验二的Complex代码,加入不少于三个JUnit单元测试用例,测试成功后git add .; git commit -m "自己学号 添加内容";git push;提交搭档项目git log的截图,包含上面git commit的信息,并加上自己的学号水印信息。
实验截图

1296455-20180427212211070-990174325.png

1296455-20180427202456378-629402220.png

三、敏捷开发与XP实践-3

实验要求
  • http://www.cnblogs.com/rocedu/p/4795776.html, Eclipse的内容替换成IDEA
  • 完成重构内容的练习,下载搭档的代码,至少进行三项重构,提交重构后代码的截图,加上自己的学号水印。提交搭档的码云项目链接。
实验内容及截图
  • 重构(Refactor),就是在不改变软件外部行为的基础上,改变软件内部的结构,使其更加易于阅读、易于维护和易于变更 。

  • 重构方法

1296455-20180427220019982-1389507144.png

  • 重建快捷键
    • 重命名文件、方法、属性等(rename):SHIFT+F6
    • 提取当前选择为变量(extract variable):CTRL+ALT+V
    • 提取当前选择为属性(extract field):CTRL+ALT+F
    • 提取当前选择为常量(extract constant):CTRL+ALT+C
    • 提取当前选择为方法(extract method):CTRL+ALT+M
    • 提取当前选择为方法参数(extract parameter):CTRL+ALT+P
    • 重构类、方法(change signarture):CTRL+F6
    • 提取代码块至if、try等结构中(surround with):CTRL+ALT+T
    • 创建模块文件等(new):CTRL+ALT+N
    • 创建测试用例(test):CTRL+SHIFT+T
    • 重构菜单(refactor for this):CTRL+T
  • 重构过程

重构前的代码


public class csj
{
    public static int csj(int n)
    {
        if(n>=0)
            if(n==0||n==1)
                return n;
            else
                return csj(n-2)+csj(n-1);
        return -1;
    }
    public static void main(String args[])
    {

        int m=25,n;
        int fib[]=new int[m];
        for(n=0;n<m;n++)
            fib[n]=csj(n);
        for(n=0;n<fib.length;n++)
            System.out.print(" "+fib[n]);
        System.out.println();
    }
}
  • 代码存在如下问题:
    • 类名不符合命名规则;
    • 语句结构不方便阅读
  • 实验截图

1296455-20180427232729840-630828220.png

三、敏捷开发与XP实践-3

实验内容
  • 参考 http://www.cnblogs.com/rocedu/p/6683948.html,以结对的方式完成Java密码学相关内容的学习,结合重构,git,代码标准。提交学习成果码云链接和代表性成果截图,要有学号水印。
实验截图

1296455-20180427231638601-2100133331.png

实验体会与总结

  • 本次实验过后我学会了alibaba插件的使用,可以很方便地规范我的代码。并且初步掌握了重构这项技能。不过由于代码理解能力不足,在重构时不容易发现程序不足之处因而无法顺利地规范代码,这是在以后应该学习进步的地方。
步骤耗时百分比
需求分析2013.7%
设计3020.6%
代码实现5034.4%
测试3020.6%
分析总结1510.3%

转载于:https://www.cnblogs.com/CTF5301/p/8965149.html

相关文章:

  • 往idea中导入已有的web项目
  • webpakc4.0移除了 CommonsChunkPlugin 组建
  • 判断Python输入是否为数字、字符(包括正则表达式)
  • 《C》指针
  • HTML第二课——css【2】
  • taobao_api项目进展
  • Java类库和常用类库介绍
  • 微信小程序开发:学习笔记[2]——WXML模板
  • linux常用命令:tr 命令
  • bzoj 4574: [Zjoi2016]线段树
  • 数据结构-绪论
  • 安装Emacs并设置racket环境
  • 记录一次我的造成的生产事故
  • JavaScript三(对象思想)
  • IDEA搭建工程
  • __proto__ 和 prototype的关系
  • 【笔记】你不知道的JS读书笔记——Promise
  • 【面试系列】之二:关于js原型
  • 03Go 类型总结
  • Docker下部署自己的LNMP工作环境
  • flask接收请求并推入栈
  • github指令
  • Git初体验
  • Java 9 被无情抛弃,Java 8 直接升级到 Java 10!!
  • JavaScript学习总结——原型
  • Python学习之路16-使用API
  • Quartz初级教程
  • react-native 安卓真机环境搭建
  • VuePress 静态网站生成
  • 彻底搞懂浏览器Event-loop
  • 你真的知道 == 和 equals 的区别吗?
  • 排序算法学习笔记
  • 深度解析利用ES6进行Promise封装总结
  • 说说动画卡顿的解决方案
  • 想写好前端,先练好内功
  • 终端用户监控:真实用户监控还是模拟监控?
  • #### go map 底层结构 ####
  • #Lua:Lua调用C++生成的DLL库
  • (八十八)VFL语言初步 - 实现布局
  • (第二周)效能测试
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (三分钟)速览传统边缘检测算子
  • ***测试-HTTP方法
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(六):替换字符串中匹配的子串
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .net和jar包windows服务部署
  • .NET建议使用的大小写命名原则
  • // an array of int