Tom&Jerry_team——凡事预则立

Tom&Jerry——凡事预则立

这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/1084
团队名称 Tom&Jerry
这个作业的目标 凡事预则立
作业正文 https://www.cnblogs.com/TomJerry/p/13168192.html
其他参考文献

一、冲刺的时间计划安排

时间 团队目标与产出
6.17-6.18 初期,制作系统设计、数据库设计说明书 ,系统设计和数据库设计
6.19-6.20 前端完成基础页面设计
6.21-6.22 后端完成 Java 代码
6.23-6.25 前端基本页面跳转完成 ,后端创建数据库,完成模块和数据库的连接
6.26-6.28 前端进行 UI 统一以及美化界面,后端测试并完善基础功能接口
6.29-6.30 前端连接后端接口,进行软件运行测试 ;后端进行完整性校验,根据不足之处更改后端代码,完善功能
7.1-7.2 收尾阶段,保证基本功能运行正常,页面效果对用户友好,检查 bug 和系统后期维护

二、思考和总结

针对前几次作业的不足的地方进行思考和总结

1、每次作业总在最后一天完成,使得作业在很大程度上没有检验。

2、在某些问题上,组员考虑问题不够周到,导致最后还需要反复修改本应早就该完成的任务。

3、完成作业时组内交流较少,沟通的时间不够多,导致某些问题意见不统一。

4、冲刺阶段,我们会加强沟通交流和团队协作,提高效率。

三、需要改进的团队分工

改进:

1、大家需要积极参与项目活动中来,不单单是完成分配给自己的任务

2、合理规划好时间,高效率的完成项目

3、多线下讨论,努力解决项目中遇到的问题

四、代码规范

根据此篇博客——作业要求,代码规范,结合我们的项目实情,现作出以下代码规范——截取至阿里发布的Java开发手册v1.4

一、编程规约

(一)、命名风格

1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。

反例:`_name / __name / $name / name_ / name$ / name__`

2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。

 说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。注意,即使纯拼音命名方式 也要避免采用。

正例:`alibaba / taobao / youku / hangzhou`等国际通用的名称,可视同英文。

反例:`DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量 = 3`

3.【强制】类名使用 UpperCamelCase 风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID 等。

扫描二维码关注公众号,回复: 11326923 查看本文章
正例:`MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion`

反例:`macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion`

4.【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从 驼峰形式。

正例:`localValue / getHttpMessage() / inputUserId`

5.【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。

正例:`MAX_STOCK_COUNT`

反例:`MAX_COUNT`

6.【强制】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类 命名以它要测试的 类的名称开始,以 Test 结尾。

7.【强制】类型与中括号紧挨相连来表示数组。

正例:`定义整形数组 int[] arrayDemo;`

反例:`在 main 参数中,使用 String args[]来定义。`

8.【强制】POJO 类中布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误。

反例:`定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 阿里巴巴 Java 开发			手册 2/38 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛 出异常。`

9.【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用 单数形式,但是 类名如果有复数含义,类名可以使用复数形式。

正例:`应用工具类包名为 com.alibaba.ai.util、类名为 MessageUtils(此规则参考 spring 的框架结构)`

10.【强制】杜绝完全不规范的缩写,避免望文不知义。

反例:`AbstractClass“缩写”命名成 AbsClass;condition“缩写”命名成 condi,此类随意缩写严重降低了代码的可阅读性。`

11.【推荐】为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词 组合来表达其意.

正例:`在 JDK 中,表达原子更新的类名为:AtomicReferenceFieldUpdater。 `

反例:`变量 int a 的随意命名方式。`

12.【推荐】如果模块、接口、类、方法使用了设计模式,在命名时需体现出具体模式。

		说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。

正例:`public class OrderFactory; `

			`public class LoginProxy; `

			`public class ResourceObserver;`
  1. 【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁 性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是 与接口方法相关,并且是整个应用的基础常量。

    正例:接口方法签名 void commit(); 接口基础常量 String COMPANY = "alibaba";

    反例:接口方法定义 public abstract void f();

    说明:JDK8 中接口允许有默认实现,那么这个 default 方法,是对所有实现类都有价值的默 认实现。

  2. 接口和实现类的命名有两套规则:

    1)【强制】对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部 的实现类用 Impl 的后缀与接口区别。

    正例:CacheServiceImpl 实现 CacheService 接口。

    2)【推荐】如果是形容能力的接口名称,取对应的形容词为接口名(通常是–able 的形式)。

    正例:AbstractTranslator 实现 Translatable 接口。

  3. 【参考】枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。

    说明:枚举其实就是特殊的类,域成员均为常量,且构造方法被默认强制是私有。

    正例:枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。

  4. 【参考】各层命名规约:

    A) Service/DAO 层方法命名规约

    1) 获取单个对象的方法用 get 做前缀。 
    
    2) 获取多个对象的方法用 list 做前缀,复数形式结尾如:listObjects。 
    
    3) 获取统计值的方法用 count 做前缀。 
    
    4) 插入的方法用 save/insert 做前缀。 
    
    5) 删除的方法用 remove/delete 做前缀。
    
    6) 修改的方法用 update 做前缀。 
    

    B) 领域模型命名规约

    1) 数据对象:xxxDO,xxx 即为数据表名。
    
    2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。 
    
    3) 展示对象:xxxVO,xxx 一般为网页名称。 
    
    4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。
    

二、常量定义

  1. 【强制】不允许任何魔法值(即未经预先定义的常量)直接出现在代码中。

    反例:String key = "Id#taobao_" + tradeId; cache.put(key, value);

  2. 【强制】在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字 1 混淆,造成误解。

    说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2?

  3. 【推荐】不要使用一个常量类维护所有常量,要按常量功能进行归类,分开维护。

    说明:大而全的常量类,杂乱无章,使用查找功能才能定位到修改的常量,不利于理解和维护。

    正例:缓存相关常量放在类 CacheConsts 下;系统配置相关常量放在类 ConfigConsts 下。

  4. 【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包 内共享常量、类内共享常量。

    1) 跨应用共享常量:放置在二方库中,通常是 client.jar 中的 constant 目录下。

      2) 应用内共享常量:放置在一方库中,通常是子模块中的 constant 目录下。
    

    反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示 “是”的变量:

    类 A 中:public static final String YES = "yes";

    类 B 中:public static final String YES = "y";

    A.YES.equals(B.YES),预期是 true,但实际返回为 false,导致线上问题。

    3) 子工程内部共享常量:即在当前子工程的 constant 目录下。

    4) 包内共享常量:即在当前包下单独的 constant 目录下。

    5) 类内共享常量:直接在类内部 private static final 定义。

  5. 【推荐】如果变量值仅在一个固定范围内变化用 enum 类型来定义。

    说明:如果存在名称之外的延伸属性应使用 enum 类型,下面正例中的数字就是延伸信息,表 示一年中的 第几个季节。

     正例:`public enum SeasonEnum { `
    
     		 `SPRING(1), SUMMER(2), AUTUMN(3), WINTER(4); `
    
     		 `private int seq; `
    
     		 `SeasonEnum(int seq){ `
    
     		 `this.seq = seq; `
    
     	`} `
    
     `}`
    

三、代码格式

  1. 【强制】大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
    • 左大括号前不换行。
    • 左大括号后换行。
    • 右大括号前换行。
    • 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
  2. 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
  3. 【强制】采用 4 个空格缩进,禁止使用 tab 字符。

四、注释规约

1、【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用 // xxx 方式。

说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。

2、【强制】所有的抽象方法(包括接口中的方法)必须要用 Javadoc 注释、除了返回值、参数、异常说明外,还必须指出该方法做什么事情,实现什么功能。

说明:对子类的实现要求,或者调用注意事项,请一并说明。

3、【强制】所有的类都必须添加创建者和创建日期。

4、【强制】方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释 使用/* */注释,注意与代码对齐。

5、【强制】所有的枚举类型字段必须要有注释,说明每个数据项的用途。

6、【推荐】与其“半吊子”英文来注释,不如用中文注释把问题说清楚。专有名词与关键字保持英文原文即可。

  • 反例:“TCP连接超时”解释成“传输控制协议连接超时”,理解反而费脑筋。

7、【推荐】代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑等的修改。

  • 说明:代码与注释更新不同步,就像路网与导航软件更新不同步一样,如果导航软件严重滞后,就失去了导航的意义。

8、【参考】谨慎注释掉代码。在上方详细说明,而不是简单地注释掉。如果无用,则删除。

  • 说明:代码被注释掉有两种可能性:

    • 后续会恢复此段代码逻辑。
    • 永久不用。
  • 前者如果没有备注信息,难以知晓注释动机。后者建议直接删掉(代码仓库保存了历史代码)。

五、《构建之法》阅读

软件测试

1、进行软件测试尽量在需求阶段开始进行,用户的需求必须放在首位。

2、设计测试用例试时,应率先考虑到合法的输入和不合法的输入以及各种条件,避免极端状态和意外状态。

3、记录好每一次出现的错误,统计分析报告,方便日后做维护。

软件质量

1、软件的质量:软件=程序+软件工程

2、软件工程的质量如何衡量

3、实施CMMI的意义 :1、连续式 2、阶段式

稳定和发布阶段

发布之后:事后诸葛亮会议 现代软件工程 项目回顾 任何一次项目结束之后,都应该进行一次诸葛亮会议,分析总结项目内遇到的问题、总结经验教训。

IT行业的创新

一、 创新的迷思 迷思之七:成功的团队更能创新 维持性的技术 颠覆性的技术

二、创新的时机 三点领悟: 1、赢者通吃2、螳臂当车3、只先一步

人、绩效和职业道德

一、领导力—带领团队成长 1.萌芽阶段 2.磨合阶段 3.规范阶段 4.创造阶段

正确的分工很重要:1.个人技术能力强,做事效率好的成员,应鼓励他们发挥出更多的领导作用;2.成员要统一好意见,不要出现内部矛盾;3.按照成员的能力准确分工。

六、团队的github仓库

github地址:https://github.com/DetachmLiu/OMCP

猜你喜欢

转载自www.cnblogs.com/TomJerry/p/13168192.html