项目Alpha冲刺——代码规范、冲刺任务与计划
作业要求
这个作业属于哪个课程 | 软件工程1916-W(福州大学) |
这个作业要求在哪里 | 项目Alpha冲刺 |
团队名称 | 基于云的胜利冲锋队 |
项目名称 | 云评:高校学生成绩综合评估及可视化分析平台 |
这个作业的目标 | 团队的代码规范、本次冲刺任务与计划 |
其他参考文献 | 1.邹欣.构建之法[M].3版:人民邮电出版社,2014. |
团队阵容
队员学号 | 队员姓名 | 个人博客地址 | 备注 |
---|---|---|---|
221500201 | 孙文慈 | https://www.cnblogs.com/swc221500201/ | |
131601207 | 陈序展 | https://www.cnblogs.com/chenxuzhan/ | |
221600414 | 冯凯 | https://www.cnblogs.com/codingkai/ | 队长 |
221600415 | 傅德泉 | https://www.cnblogs.com/dqblog/ | |
221600416 | 黄海山 | https://www.cnblogs.com/hhs-blog/ | |
221600417 | 黄乐兴 | https://www.cnblogs.com/hlxing/ | |
221600439 | <script> | https://www.cnblogs.com/aaaaaaaaaaaaaa/ | |
任务与计划安排
天数 | 任务安排 |
---|---|
第一天 | 代码规范制定,项目前后端各自基础构建,选定框架、UI库 |
第二天 | 熟悉框架、UI库,编写大体架构,数据库建库建表 |
第三天 | 熟悉框架和库,统一开发流程,后端 PO 模型 |
第四天 | 编写API文档,完成注册页面,编写登录,注册接口 |
第五天 | 完成登录页面,编写教师评分维度管理接口 |
第六天 | 完成新建评分维度页面,编写教师新建班级接口 |
第七天 | 完成教师新建班级页面,编写教师编辑班级接口 |
第八天 | 完成教师编辑班级页面,编写学生及助教加入班级功能接口 |
第九天 | 完成学生及助教加入班级页面,测试接口安全性,校验接口是否完成需求 |
第十天 | Alpha版本程序的测试与交付 |
代码规范
后端
代码格式
- 缩进以4个空格为单位,禁止使用 tab 字符
- 大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
- 左大括号前不换行
- 左大括号后换行
- 右大括号前换行
- 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行
- 尽量避免一行的长度超过80个字符
- 当一个表达式无法容纳在一行内时,可在一个逗号后面断开或在一个操作符前面断开
- 新的一行应该与上一行同一级别表达式的开头处对齐
- 将类似操作,或一组操作放在一起不用空行隔开,而用空行隔开不同组的代码
- 方法参数在定义和传入时,多个参数逗号后边必须加空格
- if/for/while/switch/do 等保留字与括号之间都必须加空格
命名风格
- 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束
- 法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式
- 常量命名全部大写,单词间用下划线隔开
- 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式
- 类名每个单词必须由大写字母开头而其他字母都小写的单词组成
- 任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意
- 数组应该用下面的方式来命名
byte[] buffer;
- 不用数字定义名字
- 枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开
- POJO 类中布尔类型的变量,都不要加 is 前缀
常量定义
- 不允许任何魔法值(即未经预先定义的常量)直接出现在代码中
- 如果变量值仅在一个固定范围内变化用 enum 类型来定义
注释规约
- 类、类属性、类方法的注释必须使用 Javadoc 规范,使用/**内容*/格式,不得使用// xxx 方式
- 所有的类都必须添加创建者和创建日期
- 方法内部单行注释,在被注释语句上方另起一行,使用//注释。方法内部多行注释使用/* */注释,注意与代码对齐
- 代码修改的同时,注释也要进行相应的修改,尤其是参数、返回值、异常、核心逻辑等的修改
控制语句
- 在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用单行的编码方式:if (condition) statements;
- 避免采用取反逻辑运算符
领域设计规范
- 服务类基于业务领域模块划分,划分原则可以与业务表对应
- 尽量减少表连接,杜绝两个业务领域的表连接
- 禁止大表连接(超过100w数据)
- 禁止在SQL语句中使用1=1
- 禁止批量数据用in关键词分组排序,即在In条件复杂查询语句
- 更新操作条件必须有索引,通过explain确认执行计划走索引,尽量使用pk主键
- 查询条件必须走索引
- 原则上不允许应用使用delete语句,如有需要,必须记log,经过团队评审
- 实体类与数据库表对应,api接口下的实体与dao层不一致,dao层实体命名为XxxEntity,防止修改内部实体类影响接口稳定性。
数据库设计规范
- 禁止删除字段
- 禁止更新字段名称,类型,减少长度;可以修改增加字段长度或备注
- 数据库脚本支持提前上线,否则会影响热发布或者灰度发布
- 每个领域实体表必须有一个领域主键驱动,便于信息查询
- 查询结果按需读取,防止因字段过大造成数据传输开销
- SQL命名准确,功能要单一,不能包含多种含义功能,维护会更复杂
- 命名使用下划线命名,统一小写
前端
文件组织结构
- 所有前端代码、插件、配置文件和资源都放在项目的根目录下
- 所有外部模块和插件都放在/node_modules目录下
- 主页icon和index.html放在/public目录下
- 所有编写的组件、资源文件以及main.js都放在/src目录下
- 所有静态资源文件放在/src/assets目录下
- 所有Vue组件放在/src/components目录下
- README.md放在项目的根目录下,提供项目的配置安装指南
HTML代码规范
- 文件名全部使用小写字母,相邻单词之间使用“_"连接
- 所有标签名必须小写,并且要有正确的关闭标签
- 相邻标签之间用4个空格缩进
- 标签名中相邻单词之间用“-”分隔
- 标签属性名全部小写,value用“”括起来
- HTML的语言属性统一设置为zh-cn
CSS代码规范
- 文件名全部使用小写字母,相邻单词之间使用“_"连接
- 类选择器和id选择器要合理使用
- 类名和id名全部使用小写字符,相邻单词之间用“-”分隔
- 为避免css样式的冗余,尽量将共同的样式提取到同一个选择器中
- 仅当前组件的style样式使用“scoped”加以范围说明
JavaScript代码规范
-
文件名全部使用小写字母,相邻单词之间使用“_"连接
-
代码段之间使用4个空格缩进,代码段使用{}括起来
-
变量使用小写字母表示,相邻单词之间使用“-”分隔
-
变量,表达式之间使用空格分开,常量使用大写字母表示
-
段注释使用/**/表示
-
行注释使用//表示
系统设计和数据库设计问题解答
团队成员的贡献度如何存储?
贡献度字段在用户得分表里面存储,每次作业的得分当做一条记录。
作业发布后是否可编辑?
可以实时编辑并存储。
如何防止学生修改成绩?
只有拥有班级权限的老师角色才拥有修改成绩的权限。
系统设计书内容欠缺?
相关内容已增加。
二次评分,比如手误操作如何验证?
老师可以对学生成绩进行多次修改。