Code Specification

使用条件语句

if 语句

原则一:要使得正常情况执行代码过程清晰,优先考虑代码正常执行情况。

原则二:不要用 “>” 代替 “>=” 或用 “<” 代替 “<=”。

原则三:正常情况的处理放在 if 后面而不是 else 后面(保证能快速找到代码正常的执行过程)。

原则四:if 子句后面跟随一个有意义的语句,避免空语句。

if-else if-else 语句

原则一:把常见的情况放在最前面(既提高了阅读效率,也变相的提高了系统执行效率)。

原则二:确保所有情况都考虑到,else 子句用作出错消息或者不考虑的情况。

switch case 语句

原则一:为 case 选择最有效的排列顺序,当 case 超过3个,排序就更为重要。以下是一些排序原则。

  • 按字母顺序或按数字顺序排列
  • 把正常的情况放在前面
  • 按执行频率排列,最近常执行的 case 子句放在最前面

原则二:尽量简化 case 子句中的操作,避免逻辑嵌套,可以将要执行的子句抽取成一个方法,使得逻辑更清晰。

原则三:不要为了使用 switch 语句而刻意制造一个变量。

原则四:利用 default 子句来检测错误的情况,而不是代替一种 case 的情况。

原则五:避免代码执行执行越过 case,每条 case 都应该及时加 break;

测试

一个值得养成的测试习惯

:::success
每当你遇见一个bug,先写一个测试来清楚地复现它。仅当测试通过时,才视为bug修完。只要测试存在一天,我就知道这个错误永远不会再复现。这个bug和对应的测试也会提醒我思考:测试集里是否还有这样不被阳光照耀到的犄角旮旯
:::

推荐的测试方法

方法一:对每一项相关的需求进行测试,以确保需求都已经被实现。

方法二:对每一个相关的设计关注点进行测试,以确保设计已经被实现。

方法三:用 基础测试来扩充针对需求和设计的详细测试用例。

方法四:使用一个检查表,记录项目迄今为止所犯的错误类型。

测试技巧

技巧一:选择最有可能找到错误的测试用例。

技巧二:结构化的基础测试,需要去测试程序中每一条语句至少一次。所需基础测试用例的最少数量可以使用该方法计算:程序本身记作1,每遇到关键字时加1,如:if,while,for,and,or,case

技巧三:数据流测试,对于数据的状态进行测试。状态可以是:已定义已使用已销毁。还有一些术语用来描述对数据进行某种操作之前或之后的状态:已进入已退出。对于所有已定义-已使用的组合进行测试是比较好的实践。

技巧四:边界值分析,对于边界值一般会遇到三种情况:大于边界值,等于边界值,小于边界值。为这些情况编写测试用例。

技巧五:使用几类坏数据测试,坏数据包括(数据太少,太多数据,错误的数据情况,长度错误的数据,未初始化的数据)。使用几类好数据测试,好数据包括(所期望的值,最小的正常情况,最大的正常情况,与旧数据的兼容性)

技巧六:采用容易的手工检查的测试用例。如计算薪水,可以输入一些自身能判断的数据123,根据薪水规则计算出的结果,判断是否符合自己的预期。

表驱动编程

方法命名规范

返回真伪值的方法

位置 单词 意义
Prefix is 对象是否符合期待的状态 isValid
Prefix can 对象能否执行所期待的动作 canRemove
Prefix should 调用方执行某个命令或方法是好还是不好,应不应该,或者说推荐还是不推荐 shouldMigrate
Prefix has 对象是否持有所期待的数据和属性 hasObservers
Prefix needs 调用方是否需要执行某个命令或方法 needsMigrate

用来检查的方法

单词 意义
ensure 检查是否为期待的状态,不是则抛出异常或返回 error code ensureCapacity
validate 检查是否为正确的状态,不是则抛出异常或返回 error code validateInputs

按需求才执行的方法

位置 单词 意义
Suffix IfNeeded 需要的时候执行,不需要的时候什么都不做 drawIfNeeded
Prefix might 同上 mightCreate
Prefix try 尝试执行,失败时抛出异常或是返回 errorcode tryCreate
Suffix OrDefault 尝试执行,失败时返回默认值 getOrDefault
Suffix OrElse 尝试执行、失败时返回实际参数中指定的值 getOrElse
Prefix force 强制尝试执行。error 抛出异常或是返回值 forceCreate, forceStop

异步相关方法

位置 单词 意义
Prefix blocking 线程阻塞方法 blockingGetUser
Suffix InBackground 执行在后台的线程 doInBackground
Suffix Async 异步方法 sendAsync
Suffix Sync 对应已有异步方法的同步方法 sendSync
Prefix or Alone schedule Job 和 Task 放入队列 schedule, scheduleJob
Prefix or Alone post 同上 postJob
Prefix or Alone execute 执行异步方法(注:我一般拿这个做同步方法名) execute, executeTask
Prefix or Alone start 同上 start, startJob
Prefix or Alone cancel 停止异步方法 cancel, cancelJob
Prefix or Alone stop 同上 stop, stopJob

回调方法

位置 单词 意义
Prefix on 事件发生时执行 onCompleted
Prefix before 事件发生前执行 beforeUpdate
Prefix pre 同上 preUpdate
Prefix will 同上 willUpdate
Prefix after 事件发生后执行 afterUpdate
Prefix post 同上 postUpdate
Prefix did 同上 didUpdate
Prefix should 确认事件是否可以发生时执行 shouldUpdate

操作对象生命周期的方法

单词 意义
initialize 初始化。也可作为延迟初始化使用 initialize
pause 暂停 onPause ,pause
stop 停止 onStop,stop
abandon 销毁的替代 abandon
destroy 同上 destroy
dispose 同上 dispose

与集合操作相关的方法

单词 意义
contains 是否持有与指定对象相同的对象 contains
add 添加 addJob
append 添加 appendJob
insert 插入到下标 n insertJob
put 添加与 key 对应的元素 putJob
remove 移除元素 removeJob
enqueue 添加到队列的最末位 enqueueJob
dequeue 从队列中头部取出并移除 dequeueJob
push 添加到栈头 pushJob
pop 从栈头取出并移除 popJob
peek 从栈头取出但不移除 peekJob
find 寻找符合条件的某物 findById

与数据相关的方法

单词 意义
create 新创建 createAccount
new 新创建 newAccount
from 从既有的某物新建,或是从其他的数据新建 fromConfig
to 转换 toString
update 更新既有某物 updateAccount
load 读取 loadAccount
fetch 远程读取 fetchAccount
delete 删除 deleteAccount
remove 删除 removeAccount
save 保存 saveAccount
store 保存 storeAccount
commit 保存 commitChange
apply 保存或应用 applyChange
clear 清除数据或是恢复到初始状态 clearAll
reset 清除数据或是恢复到初始状态 resetAll

成对出现的动词

单词 意义
get 获取 set 设置
add 增加 remove 删除
create 创建 destory 移除
start 启动 stop 停止
open 打开 close 关闭
read 读取 write 写入
load 载入 save 保存
create 创建 destroy 销毁
begin 开始 end 结束
backup 备份 restore 恢复
import 导入 export 导出
split 分割 merge 合并
inject 注入 extract 提取
attach 附着 detach 脱离
bind 绑定 separate 分离
view 查看 browse 浏览
edit 编辑 modify 修改
select 选取 mark 标记
copy 复制 paste 粘贴
undo 撤销 redo 重做
insert 插入 delete 移除
add 加入 append 添加
clean 清理 clear 清除
index 索引 sort 排序
find 查找 search 搜索
increase 增加 decrease 减少
play 播放 pause 暂停
launch 启动 run 运行
compile 编译 execute 执行
debug 调试 trace 跟踪
observe 观察 listen 监听
build 构建 publish 发布
input 输入 output 输出
encode 编码 decode 解码
encrypt 加密 decrypt 解密
compress 压缩 decompress 解压缩
pack 打包 unpack 解包
parse 解析 emit 生成
connect 连接 disconnect 断开
send 发送 receive 接收
download 下载 upload 上传
refresh 刷新 synchronize 同步
update 更新 revert 复原
lock 锁定 unlock 解锁
check out 签出 check in 签入
submit 提交 commit 交付
push 推 pull 拉
expand 展开 collapse 折叠
begin 起始 end 结束
start 开始 finish 完成
enter 进入 exit 退出
abort 放弃 quit 离开
obsolete 废弃 depreciate 废旧
collect 收集 aggregate 聚集

Code Specification
http://wszzf.top/2021/08/16/Code-Specification/
作者
Greek
发布于
2021年8月16日
许可协议