bug终结者 团队作业第六、七周

作业要求:团队作业第六、七周

博客编辑:20162322 朱娅霖

一、修改《需求规格说明书》

《需求规格说明书》2.0版(即初稿)

《需求规格说明书》3.0版(修改版)

初稿中的不足

  • 内容不完整
  • 格式不规范

二、团队编码规范

1.基本原则

强制性原则:

  1. 字符串的拼加操作,必须使用StringBuilder;
  2. try…catch的用法
try{

}catch{Exception e
e.printStackTrace();
}finally{ }//在最外层的Action中可以使用,其它地方一律禁止使用;
try{
//程序代码
}catch(Exception e){
//为空,什么都不写
}//在任何场景中都禁止使用
try{

}catch{Exception e
throw new runtimeException(e);//最优先采用的写法
}finally{ }
  1. 对于捕获后,不知道干什么事情或者也不知道怎样处理的情况,就不要捕获异常,留给外出层去捕获处理;
  2. 返回类型为集合的,在方法声明中必须使用泛型,必须在javadoc中注明什么情况下返回null,什么情况下返回空集合。
  3. 对于方法、变量声明范围要采用如下优先级:private、protected、public,对于变量要采用如下的优先级:局部变量、实例变量、类变量,如果必须要采用实例变量或类变量的情况下,要保证线程安全性,如有可能尽量采用ThreadLocal保存实例变量或类变量;
  4. 如果不是必须,不要在循环中去定义变量或者new 对象;尽量在需要的最后一刻才去new 对象;
  5. 如果不是必须,不要在循环中去用try…catch;
  6. 类中对于比较复杂的逻辑要采用行注释的方式进行注释,java代码中绝对不允许采用块注释(/**/)进行注释;
  7. Java类的名称第一个子母必须大写,有多个单词组成的,每个单词的首字母大写
  8. jsp的文件名必须全部小写;
  9. Spring的bean配置文件名必须小写,格式为xxx.bean.xml,xxx.bean.xml配置文件中的<bean id=”” ,此处的id,就是将类名的第一个字母小写放到此处。
  10. xwork的配置文件名必须小写,且遵循xwork_xxx.xml的格式书写,其中XXX是业务名称的缩写;
  11. 日志的处理,
if (log.isDebugEnabled())
ex.printStackTrace();
else
log.error("从数据库删除: [" + entity.getClass().getName() + "] 实例失败", daex);
throw new PersistenceException("从数据库删除: [" + entity.getClass().getName()+ "] 实例失败", daex);
  1. 代码中严禁使用System.out.println()进行调试输出,如果要使用调试信息,必须使用log.debug()。对于必要的信息使用log.info()进行输出;
  2. 类中不要出现无用import,可以采用IDE工具进行优化,类提交前进行代码的格式化;
  3. 有业务逻辑处理的类必须写junit单元测试类;
  4. 国际化的支持:ftl模板中不允许出现中文字符,要全部放到相应的properties文件中,properties文件要放到和Action类同样的目录中;ftl的编码要全部采用UTF-8的格式;properties文件的命名:中文:Action名称+“_zh”+“_CN”.properties,英文:Action名称+“_en”+“_US”.properties
  5. 一个程序文件最好不要超过2000行
  6. 尽可能缩小对象的作用域,这样对象的可见范围和生存期也都会尽可能地小,尽所有可能优先采用局部变量,实在没有办法用全局变量的,优先采用ThreadLocal来处理。
  7. 一个方法所完成的功能要单一,不同的功能封装为不同的方法.
  8. 尽可能的处理异常或转换异常,不要一味的包装异常
  9. 如果对象在某个特定范围内必须被清理(而不是作为垃圾被回收),请使用带有finally子句的try块,在finally子句中进行清理。
  10. 对于把一些逻辑相关的类组织在一起,可以考虑把一个类的定义放在另一个类的定义中,这种情况推荐使用内部类(比如界面层中的事件响应等)。内部类拥有所有外围类所有成员的访问权。
  11. 对成员变量的访问最好通过getter/setter方法,这样能够保证访问的合法性,以及代码调整
  12. 优先选择接口而不是抽象类或具体类。如果你知道某些东西将成为基类,你应当优先把它们设计成接口;只有在必须放进方法定义或成员变量时,才把它修改为具体或抽象类。接口只和客户希望的动作有关(协议),而类则倾向于关注实现细节。
  13. 使用java标准库提供的容器。精通他们的用法,将极大地提高工作效率。优先选择ArrayList来处理顺序结构,选择HashSet来处理集合,选择HashMap来处理关联数组,选择linkedList来处理堆栈和队列,它对顺序访问进行了优化,向List中间插入与删除的开销小,但随机访问则较慢。当使用前三个的时候,应该把他们向上转型为List、Set和Map,这样就可以在必要的时候以其它方式实现
  14. 数组是一种效率最高的存储和随机访问对象引用序列的方式,但是当创建了一个数组对象,数组的大小就被固定了,如果在空间不足时再创建新的数组进行复制,这样效率就比ArrayList开销大了。所以必须明确使用场景。
  15. 尽量使用”private”、”protected”关键字。一旦你把库的特征(包括类、方法、字段)标记为public,你就再也不可能去掉他们。在这种方式下,实现的变动对派生类造成的影响最小,在处理多线程问题的时候,保持私有性尤其重要,因为只有Private的字段才会受到保护,而不用担心被未受同步控制的使用所破坏。
  16. 禁止使用如下代码
try{
something()
}catch(Exception ex)
{}
new Exception()

2.类编写规范

类的结构组织,一般按照如下的顺序:

  1. 常量声明
  2. 静态变量声明
  3. 成员变量声明
  4. 构造函数部分
  5. Finalize部分
  6. 成员方法部分
  7. 静态方法部分
  8. 这种顺序是推荐的,在实际开发中可以按照一定的尺度修改,原则是程序更易读。如对方法的排序按照重要性,或按照字母顺序排列或按照方法之间的关系排列。
  9. 每个方法(包括构造与finalize)都是一个段。多个变量声明按照逻辑共同组成一个段,段与段之间以空行分隔。
  10. 类声明时,要指出其访问控制,一般为没有修饰符,public,和private。
  11. 方法与方法之间,大的部分之间都需要以空行隔离。
  12. 编写通用性的类时,请遵守标准形式。包括定义equals()、hasCode()、toString()、Clone(实现Cloneable接口),并实现Comparable和Serialiable接口
  13. 对于设计期间不需要继承的类,尽量使用final

3.变量编写规范

  1. 对成员变量, 尽量采用private
  2. 每一个变量声明/定义占一行(参数变量除外),如
int a;
int b;

比int a,b; 更容易读, 更容易查找bug

3. 局部变量在使用前必须初始化,一般在声明时初始化

4. 变量的声明要放在程序块的开始位置,如

public void myMethod() {
int int1 = 0; // beginning of method block
if (condition) {
int int2 = 0; // beginning of "if" block
...
}
}
  1. 数组的申明采用 <数据类型[] + 变量名>方式,如char[] buffer; 而不是 char buffer[];

4.方法编写规范

  1. 对成员方法,不要轻易的采用public的成员变量。主要的修饰符有public, private, protected, 无
  2. 空方法中方法声明和函数体可都在一行。如: void func(){}
  3. 方法和方法之间空一行
  4. 方法的文档注释放在方法的紧前面,不能空一行。
  5. 避免过多的参数列表,尽量控制在5个以内,若需要传递多个参数时,当使用一个容纳这些参数的对象进行传递,以提高程序的可读性和可扩展性
  6. 方法中的循环潜套不能超过2层
  7. 对于设计期间不需要子类来重载的类,尽量使用final
  8. 每个方法尽量代码行数尽量不要超过100行(有效代码行,不包括注释),但必须保证逻辑的完整性
  9. 接口中的方法默认级别为protected,只有很确认其它子系统的包会调用自己子系统的接口中的方法时,才将方法暴露为public.

5.语言使用及书写规范

  1. 避免变量的定义与上一层作用域的变量同名。
  2. 方法与方法之间用需要用一空行隔开
  3. 局部变量在使用时刻声明,局部变量/静态变量在声明时同时初始化
  4. 在与常数作比较时常数放在比较表达式的前面如:
if(“simpleCase”.equals(obj))…
if(null == obj)….
  1. return语句中,不要有复杂的运算。
  2. switch语句,需要一个缺省的分支

三、进行项目的后端架构设计

四、本次团队分工

姓名 本次贡献 完成进度 工作量比例
20162302 杨京典 修改第三章、开始app的构架 100% 20%
20162322 朱娅霖 修改全文、分配任务、检查汇总整理(markdown 及 pdf)、编辑博客 100% 40%
20162323 周楠 第三章 100% 5%
20162327 王旌含 修改第五章、搜集app图片素材 100% 5%
20162328 蔡文琛 第四章、搜集app音频素材 100% 5%
20162329 张旭升 修改全文、开始app的构架 100% 25%

本周小组学习会议

bug终结者 团队作业第六、七周的更多相关文章

  1. bug终结者 团队作业第一周

    bug终结者 团队作业第一周 小组组员及人员分工 小组成员 组长: 20162323 周楠 组员: 20162302 杨京典 20162322 朱娅霖 20162327 王旌含 20162328 蔡文 ...

  2. bug终结者 团队作业第二周

    bug终结者 团队作业第二周 我们小组选取游戏"开心消消乐",回答问题: 1. 此类软件是什么时候开始出现的, 这些软件是怎么说服你(陌生人)成为他们的用户的? 他们的目标都是盈利 ...

  3. bug终结者 团队作业第三周

    bug终结者 团队作业第三周 团队展示 队名 bug终结者 队员风采: 杨京典 20162302 风格:先构建框架,在一 一实现,在实现的过程中不断测试和修改. 擅长的技术:拆分问题,使用相对简单的思 ...

  4. bug终结者 团队作业第四、五周

    bug终结者 团队作业第四.五周 博客编辑者:20162322朱娅霖 本周学习任务: 团队协作完成<需求规格说明书> 工作流程 第四周 团队成员各自完成蓝墨云班课中<需求规格说明书& ...

  5. bug终结者 团队作业第八周

    bug终结者 团队作业第八周 本次任务 素材提供及编辑:20162328 蔡文琛 博客修改完善:20162322 朱娅霖 "bug终结者" 宏伟蓝图 UML 手绘底稿 用例图 选项 ...

  6. 2017-2018-1 我爱学Java 第六七周 作业

    团队六七周作业 完善版需求规格说明书 制定团队编码规范 数据库设计 后端架构设计 TODOList 参考资料 完善版需求规格说明书 <需求规格说明书>初稿不足之处: 1.开发工具写错 2. ...

  7. 团队作业第六次—团队Github实战训练

    作业描述 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 团队作业第六次-团队Github实战训练 团队目标 搭建一个相对公平公正的抽奖系统,根据QQ聊天记录,完成从统计参与抽 ...

  8. 团队作业第六次——团队Github实战训练

    作业格式 课程名称:软件工程1916|W(福州大学) 作业要求:团队作业第六次-团队Github实战训练 团队名称:葫芦娃队 作业目标:确定和分析选题,绘制评审表 github地址:https://g ...

  9. 201871010104-陈园园 《面向对象程序设计(java)》第六——七周学习总结

    201871010104-陈园园 <面向对象程序设计(java)>第六——七周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daiz ...

随机推荐

  1. 蒟蒻关于斜率优化DP简单的总结

    斜率优化DP 题外话 考试的时候被这个玩意弄得瑟瑟发抖 大概是yybGG的Day4 小蒟蒻表示根本不会做..... 然后自己默默地搞了一下斜率优化 这里算是开始吗?? 其实我讲的会非常非常非常简单,, ...

  2. HiHocoder1415 : 后缀数组三·重复旋律3 & Poj2774:Long Long Message

    题面 HiHocoder1415 Poj2774 Sol 都是求最长公共子串,\(hihocoder\)上讲的很清楚 把两个串拼在一起,中间用一个特殊字符隔开 那么答案就是排序后相邻两个不同串的后缀的 ...

  3. java&python环境变量+idea&pycharm激活

    java: JAVA_HOME=C:\jdk1.5.0_06 PATH=%JAVA_HOME%\bin;%PATH% CLASSPATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\l ...

  4. Centos samba 服务配置

    1背景 转到Linux有段时间了,vim操作还不能应对工程代码,之前一直都是Gnome桌面 + Clion 作开发环境,无奈在服务器上没有这样的环境, 看同事是(Windows)Source Insi ...

  5. Redis进阶实践之十八 使用管道模式加速Redis查询

    一.引言             学习redis 也有一段时间了,该接触的也差不多了.后来有一天,以为同事问我,如何向redis中批量的增加数据,肯定是大批量的,为了这主题,我从新找起了解决方案.目前 ...

  6. windows7下django项目搭建

    参考视频教程 http://study.163.com/course/    http://www.bilibili.com/video/av8915600/   http://www.bilibil ...

  7. 用MATLAB结合四种方法搜寻罗马尼亚度假问题

    选修了cs的AI课,开始有点不适应,只能用matlab硬着头皮上了,不过matlab代码全网仅此一份,倒有点小自豪. 一.练习题目 分别用宽度优先.深度优先.贪婪算法和 A*算法求解"罗马利 ...

  8. C#多线程编程(7)--锁

    一提到线程同步,就会提到锁,作为线程同步的手段之一,锁总是饱受质疑.一方面锁的使用很简单,只要在代码不想被重入的地方(多个线程同时执行的地方)加上锁,就可以保证无论何时,该段代码最多有一个线程在执行: ...

  9. LintCode主元素

    主元素1: 这道题是编程之美上的一道原题,如果题目未对时间复杂度有严格要求的话可以先排序,再取中位数. 本题中要求算法达到时间复杂度为O(n),空间复杂度为O(1),算法如下: public int ...

  10. Jmeter + Ant 测试环境搭建 及解决问题: the <jmeter> type doesn't support nested text data

    1.首先确保测试机器中已经按照jdk1.6以上版本,如果没有,那就上官网下载吧. 2.下载Ant,解压至指定目录,并配置好环境变量:http://ant.apache.org/ 在命令行下执行ant ...