Beta冲刺--代码规范
| 这个作业属于哪个课程 | 2018级计算机和综合实验班 |
|---|---|
| 这个作业要求在哪里 | 第八次团队作业:Beta冲刺 |
| 这个作业的目标 | “悦读打卡”小程序的测试与发布 |
| 作业正文 | 见下文 |
| 其他参考文献 | ... |
代码规范思路
参照《clean code》这本书的规范点编写代码
一、整洁代码
概念:代码正确、简洁明了、清晰易读、短小精确
二、命名
1、java命名规范
1-1.项目名全部小写
1-2.包名全部小写
1-3.类名首字母大写,若类名由多个单词构成,每个单词首字母大写,即驼峰命名法
1-4.变量名、方法名首字母小写,若其由多个单词构成,每个单词首字母大写,即小驼峰命名法
1-5.常量名全部大写
1-6.名称只能由数字、字母、下划线、$符组成,不能以数字开头
1-7.尽量不要使用拼音 或者 英语掺杂拼音
2、前端命名规范
2.1.一律小写;
2.2.尽量用英文
1.3.尽量不加中杠和下划线;
2.4.尽量不缩写,除非一看就明白的单词,如:wrapper可以写成wrap。
三、函数
3-1.短小
3-2.职责单一
3-3.一块代码中,函数的抽象层级需一致
3-4.函数命名规范
3-5.参数尽可能少
3-6.如果函数需要的参数要求数量有多种,应考虑将其封装成类
3-7.实用异常类代替返回错误码,抽离try/catch代码块,使代码更加简洁
四、注释
4-1.最好不要在注释中使用缩写,特别是用的很少的 不经常使用的缩写。
4-2.注释书写时要准确、易懂,不要有二义性。错误的注释只会让你或看这段代码的人多加班
4-3.注释的书写的位置最好放在被描述的代码上行,或者右侧
五、格式
5-1.为什么需要规范格式,易维护,易拓展
5-2.垂直格式 行数少,短小精悍,概念隔离,不同的的概念/逻辑 代码实用空行隔离,相关靠近:对于关系紧密的代码,尽量写在一起
5-3.水平格式 缩进、对齐
六、对象与数据结构
区别:过程式代码便于在不改动既有数据结构的前提下添加新函数 面向对象代码便于在不改动既有函数的前提下添加新类,亦即:过程式代码难以添加新数据结构,因为必须修改所有函数面向对象代码难以添加新函数,因为必须修改所有类
七、错误处理
7-1.使用异常而非返回码:更加美观、整洁
7-2.使用不可控异常 可控异常的代价是违反开放/闭合原则,因为你需要在使用的地方捕获异常
7-3.在异常发生的地方添加环境说明:这样当异常发生的时候就可以根据这些信息定位异常原因
7-4.不返回null 也不传递null 这样在接收的时候不需要进行空值检查
八、单元测试
TDD定律
在编写不能通过的单元测试前,不可编写生产代码 只可编写刚好无法通过的单元测试,不能编译也算不通过,只可编写刚好足以通过当前失败测试的生产代码----- 这三条写的有点绕,我的理解就是:要把测试代码当生产代码来写,测试也很重要
2.五大规则(F.I.R.S.T)
快速:就是代码质量要好,高效 独立:不同测试之间应相互独立 可重复:就是在各种环境中都可测试通过 自足验证:测试不依赖手工操作来知晓是否通过 及时:测试应在生产代码之前进行编写
九、类
主要注意一个点,类应短小,可通过以下两种方式达到此目的:1. 权责单一:一个类的权责不应太多,太多则需考虑拆成多个类了2. 高内聚:类的实体变量应尽可能少,类中方法尽可能多地使用到这些变量
十、系统
系统构造与使用分开 工厂:使用工厂方法自行决定何时创建实例,但是构造细节却在其他地方 依赖注入:当A对B有依赖时,A中不负责B的实例化(这就是类的权责单一原则) 2.本章的后半部分提到的AOP,AspectJ等内容都以Spring,EJB等框架为例
十一、跌进
跌进这一章提到的点不多
1.运行所有的测试:为能方便测试,我们的生产代码也要足够短小,耦合度低 2.重构:在写代码过程中要及时重构,保持代码的优雅
3.不可重复:已有的代码要利用起来,消除重复
4.表达力强:这应该是一个目标或是结果,做好前边的工作自然而然可以达到
十二、并发编程
12-1.为什么:它可以将“目的”和“时机”分离,进行解耦
12-2.并发防御原则 单一权责:主要关注一点,并发相关的代码应分离出来 为此,三点建议:1).限制数据作用域 2).使用数据副本:这不就是ThreadLocsal么3).线程应尽可能地独立
12-3.学习已有类库:Java中的并发包之类
代码规范示例
示例1、相对独立的程序块之间、变量说明之后必须加空行。
if (!valid. ni(ni))
... // program code
repssn_ ind一ssn_ datalindex].repssn_ index;
repssn_ ni - ssn_ datalindex].ni;
示例2、循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分,长表达式要在低
优先级操作符处划分新行,操作符放在新行之首。
1f lltaskno < max_ act_ task. number)
&&(n7stat. stat_ item valid (stat_ item)1)
.... 1/ program code
for i- 0,J - 0; (i < BufferKeyword[word. index],word. length)
6s (] < NewKeyword.word. length); 1++,1++)
...11 program code
for (i- 0,」- 0;
(1< first. Word_ length) 6s (J < second. word_ length);
1+. J++)
. ..11 program code
缩写:一些单词有大家公认的缩写。
示例3、如下单词的缩写能够被大家基本认可。
temp可缩写为tmp ;
fiag可缩写为flg ;
statistle可缩写为stat ;
inerement可缩写为inc;
message可缩写为msg
4、源程序中关系较为紧密的代码应尽可能相邻。
说明:便于程序阅读和查找。
示例4、
rect.length - 10;
rect.width - 5; /矩形的长与宽关系较密切,放在一起。
char_ poi = str;

浙公网安备 33010602011771号