高级认证学习笔记
编程规范
1. 注释
- 文件(流程块)注释
/*
作者:
时间:
说明:
设计步骤:
-
-
-
*/
操作 |
注释方式 |
增加 |
//Add by xx. yyyy.mm.dd ... //End |
修改 |
//Mdf by xx. yyyy.mm.dd ... //End |
删除 |
//Del by xx. yyyy.mm.dd |
//mdf by WL 2020.4.24
//false修改为true
Excel.CloseExcel(objExcelWorkBook,true)
//End
2. 驼峰命名
类型 |
要求 |
变量 |
首字母小写 |
全局变量 |
g_开头 |
布尔变量 |
is开头 |
布尔值 |
首字母大写, False/True(奇怪没有用全大写) |
空值 |
Null, 但建议小写为null(嗯,怪怪的, 不打算服从) |
数据类型 |
dict/arr等开头 |
函数名 |
首字母大写 |
3. 异常处理
- 异常不要用来做流程控制,条件控制。
- catch 时请分清稳定代码和非稳定代码,稳定代码指的是无论如何不会出错的代码。对于非稳定代码的 catch 尽可能进行区分异常类型,再做对应的异常处理
- 捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。
4. 日志 Log.Info
* 必须对日志级别进行设置
* 在流程编写和测试过程中,日志级别设置为3级,便于流程运行过程中通过日志中的相关日志和调试信息进行代码调整;测试通过后,流程正式上线生产环境之前,将日志级别设置为2级,调试输出内容不作为正式日志内容。
* 流程块步入、步出日志。在每个流程块中,开始功能代码之前先写入日志,说明对应流程块开始执行;所有功能代码结束后,写入日志说明对应流程块运行结束。如下所示:
Log.Info("环境初始化开始")
…
Log.Info("环境初始化结束")
* 关键操作完成注释。在部分容易出现异常的界面操作完成后,建议添加日志内容来体现动作的完成,例如:
```js
//点击下载按钮
Mouse.Action()
Log.Info("下载按钮点击成功")
- 逻辑分支日志。在涉及单个或嵌套逻辑判断、循环语句,在不同逻辑分支或循环内需添加日志说明,例如:
我认为在If里面添加注释就好了, 所有的If都添加Log实在是多此一举, 尤其考虑If在循环中的时候, 大量数据会使得日志中充斥着无用的分支日志
// 如果没有文件,则发送邮件,结束流程
If Len(fileList) = 0
Log.Info("本次无需导入数据,准备结束流程")
exit()
Else
Log.Info("需要导入数据,流程继续运行")
End If
- 否则日志内容中不得出现流程中涉及的数据、凭证等其他信息,如开发或测试过程中需要对相关数据进行确认或调整,要求使用调试输出命令。
- 用于流程调试或测试的数据,不能写入日志,如需进行确认或调整,要求使用调试输出命令
[插播]人机交互模式下的提示信息
确实有人的人机交互模式下, 按照中级的要求似乎要有右下角信息提示.Dialog.Notify("Content", "Title", "0")
最后一个是icon.
但Worker中的人机交互并不是一定有人守着, 因为Worker也有定时, 定时器到的时候人不在旁边也很正常. 所以Worker的人机交互指的是与Worker的交互而不是和Bot的交互
5. 单元测试
- 【强制】单元测试是可以重复执行的,不能受到外界环境的影响。
- 【强制】对于单元测试,要保证测试粒度足够小,有助于精确定位问题。单测粒度至多是类级别,一般是方法级别。
- 【推荐】UiBot Creator包含单元测试命令,在测试过程中可以视情况使用该命令。
- 【推荐】单元测试的基本目标:语句覆盖率达到70%;核心模块的语句覆盖率和分支覆盖率都要达到 100%
- 【推荐】编写单元测试代码遵守 BCDE 原则,以保证被测试模块的交付质量。
B:Border,边界值测试,包括循环边界、特殊取值、特殊时间点、数据顺序等。
C:Correct,正确的输入,并得到预期的结果。
D:Design,与设计文档相结合,来编写单元测试。
E:Error,强制错误信息输入(如:非法数据、异常流程、业务允许外等),并得到预期的结果。
- 【推荐】在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试最好覆盖所有测试用例。
6. 代码托管
- 在项目中进行开发工作时,为了方便代码的管理、共享以及安全,要求所有的代码借助第三方工具SVN或Git进行代码托管。
托管包括/res, *.flow, *.task