TreeviewCopyright © aleen42 all right reserved, powered by aleen42
开发前请认真阅读,避免出现特殊问题
一、概述
YonBIP/YonSuite低代码开发平台YonBuilder客户化开发编码规范文档
禁止应用构建开发的单据使用自定义项、自定义档案
应用创建所属领域和发布一级菜单建议保持一致,节点发布避免出现【****列表】,请调整列表页面命名
禁止直接在客户生产环境进行开发操作,开发、生产分离
禁止需求探索和开发同步进行
禁止数据建模实体发布后删除字段
尽量避免实体、页面设计器的反复增补修改
优先考虑使用标准应用构建能力,如:页面样式、布局;控制页面交互使用页面规则; 减少扩展函数使用
禁止实体业务属性使用系统关键字
函数编写要符合JS开发命名使用规范
公共参数、配置、工具类、可复用方法建议封装为公共函数,增加代码可读性
前端函数禁止复杂循环及循环调用后端请求
前端函数尽量避免JS动态生成HTML、CSS样式
前端函数尽量避免循环操作真实DOM
前端函数引用三方JS在线地址,建议使用官方提供并压缩后的
后端函数尽量避免循环操作YonQL,优先使用YonQL批量操作
后端函数尽量避免长链路的调用开放平台接口、三方接口; 性能/稳定性很难保证
后端函数尽量避免调用开放平台单据类保存接口,建议通过业务流实现推单、回写功能
后端函数尽量避免调用开放平台查询类接口,建议优先考虑参照带入,参照过滤实现。单据类无系统预制参照的情况,可通过参照其他选项创建档案参照
后端函数调用开放平台或三方查询类接口必须实现分页,每页最大数量建议不超过100;
二、应用构建编码规范
2.1、应用创建规范
应用所属领域和应用业务能力保持一致
2.2、命名规范
2.2.1、实体字段命名
- 原厂扩展业务属性加前缀extend,如:extendMerchantCode**
以下关键字禁用
base id tenant_id creator createTime
modifier modifyTime pubts dr pk_temp
version approvalFlow pk_procdefins pk_procdef startorg
startdept verifystate isWfControlled businessFlow bizFlowId
isFlowCoreBill bizFlowName bizFlowVersion source_id sourcechild_id
source_billtype bizFlowInstanceId businessType bustype ITree
parent level path sort isEnd
name code enable enablets disablets
org_id status
2.2.2、页面建模
节点发布避免出现【**列表】,请调整列表页面命名
2.2.3、函数
2.2.3.1、驼峰式命名规范
驼峰式命名法介绍:
驼峰式命名法由小(大)写字母开始,后续每个单词首字母都大写。
按照第一个字母是否大写,分为:
① Pascal Case 大驼峰式命名法:首字母大写。eg:StudentInfo、UserInfo、ProductInfo
② Camel Case 小驼峰式命名法:首字母小写。eg:studentInfo、userInfo、productInfo
2.2.3.2、变量
命名方法:小驼峰式命名法。
命名规范:前缀应当是名词。(函数的名字前缀为动词,以此区分变量和函数)
命名建议:尽量在变量名字中体现所属类型,如:length、count等表示数字类型;而包含name、title表示为字符串类型。
// 好的命名方式
var maxCount = 10;
var tableTitle = 'LoginTable';
// 不好的命名方式
var setCount = 10;
var getTitle = 'LoginTable';
2.2.3.3、函数
命名方法:小驼峰式命名法。
命名规范:前缀应当为动词。
命名建议:可使用常见动词约定
动词 | 含义 | 返回值 |
---|---|---|
can | 判断是否可执行某个动作(权限) | 函数返回一个布尔值。true:可执行;false:不可执行 |
has | 判断是否含有某个值 | 函数返回一个布尔值。true:含有此值;false:不含有此值 |
is | 判断是否为某个值 | 函数返回一个布尔值。true:为某个值;false:不为某个值 |
get | 获取某个值 | 函数返回一个非布尔值 |
set | 设置某个值 | 无返回值、返回是否设置成功或者返回链式对象 |
load | 加载某些数据 | 无返回值或者返回是否加载完成的结果 |
// 是否可阅读
function canRead() {
return true;
}
// 获取名称
function getName() {
return this.name;
}
2.2.3.4、常量
命名方法:名称全部大写。
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。
命名建议:无。
示例:
var MAX_COUNT = 10;
var URL = 'http://www.baidu.com';
2.2.3.5、单行注释
说明:单行注释以两个斜线开始,以行尾结束。
语法:// 这是单行注释
使用方式:
① 单独一行://(双斜线)与注释文字之间保留一个空格。
② 在代码后面添加注释://(双斜线)与代码之间保留一个空格,并且//(双斜线)与注释文字之间保留一个空格。
③ 注释代码://(双斜线)与代码之间保留一个空格。
示例:
// 调用了一个函数;1)单独在一行
setTitle();
var maxCount = 10; // 设置最大量;2)在代码后面注释
// setName(); // 3)注释代码
2.2.3.6、多行注释
说明:以/开头,/结尾
语法:/ 注释说明 /
使用方法:
① 若开始(/*)和结束(*/)都在一行,推荐采用单行注释。
② 若至少三行注释时,第一行为/*,最后行为*/,其他行以*开始,并且注释文字与*保留一个空格。
示例:
/*
* 代码执行到这里后会调用setTitle()函数
* setTitle():设置title的值
*/
setTitle();
2.2.3.7、函数(方法)注释
说明:函数(方法)注释也是多行注释的一种,但是包含了特殊的注释要求,参照 javadoc(百度百科)。
/**
* 函数说明
* @关键字
*/
注释名 | 语法 | 含义 | 示例 |
---|---|---|---|
@param | @param 参数名 {参数类型} 描述信息 | 描述参数的信息 | @param name {String} 传入名称 |
@return | @return {返回类型} 描述信息 | 描述返回值的信息 | @return {Boolean} true:可执行;false:不可执行 |
@author | @author 作者信息 [附属信息:如邮箱、日期] | 描述此函数作者的信息 | @author 张三 2015/07/21 |
@version | @version XX.XX.XX | 描述此函数的版本号 | @version 1.0.3 |
@example | @example 示例代码 | 演示函数的使用 | @example setTitle('测试') |
/**
* 合并Grid的行
* @param grid {Ext.Grid.Panel} 需要合并的Grid
* @param cols {Array} 需要合并列的Index(序号)数组;从0开始计数,序号也包含。
* @param isAllSome {Boolean} :是否2个tr的cols必须完成一样才能进行合并。true:完成一样;false(默认):不完全一样
* @return void
* @author polk6 2015/07/21
* @example
* _________________ _________________
* | 年龄 | 姓名 | | 年龄 | 姓名 |
* ----------------- mergeCells(grid,[0]) -----------------
* | 18 | 张三 | => | | 张三 |
* ----------------- - 18 ---------
* | 18 | 王五 | | | 王五 |
* ----------------- -----------------
*/
function mergeCells(grid, cols, isAllSome) {
// Do Something
}
2.3、实体操作规范
- ① 禁止数据建模实体发布后删除字段
- ② 禁止实体业务属性使用系统关键字,清单请看:2.2.1 小节
2.4、函数扩展规范
2.4.1、前端函数
- 1 公共参数、配置、工具类、可复用方法建议封装为公共函数,增加代码可读性
- 2 前端函数禁止复杂循环及循环调用后端请求
- 3 前端函数尽量避免JS动态生成HTML、CSS样式
- 4 前端函数尽量避免循环操作真实DOM
- 5 前端函数引用三方JS在线地址,建议使用官方提供并压缩后的
- 6 前端函数不能写密码\ak等敏感信息
2.4.2、后端函数
- 1 后端函数尽量避免循环操作YonQL,优先使用YonQL批量操作
- 2 后端函数尽量避免长链路的调用开放平台接口、三方接口; 多个接口(保存/更新/删除)连续调用,异常逻辑很难处理事务回滚
- 3 后端函数尽量避免调用开放平台单据类保存接口,建议通过业务流实现推单、回写功能
- 4 后端函数尽量避免调用开放平台查询类接口,建议优先考虑参照带入,参照过滤实现。单据类无系统预制参照的情况,可通过参照其他选项创建档案参照
- 5 后端函数调用开放平台或三方查询类接口必须实现分页,每页最大数量建议不超过100;
2.4.3、YonQL
- 1 尽量避免循环内执行sql
- 2 子查询不推荐使用,性能差
- 3 如果使用了函数,尽量给结果起别名,防止同名函数别名覆盖。
- 4 公式导致性能变差,不推荐使用
- 5 查询推荐使用 "distinct” 去重
2.4.4、定时任务(后端函数方式)
- 定时任务的最大执行时长为1分钟。尽量避免在定时任务中处理大批量数据,循环插入等操作
- 工作时间禁止设置定时任务;时间范围应选择在 03:00 - 05:00
- 定时任务的执行周期要大于1个小时
2.4.5、数据库字符集
- 数据库导出的脚本要自己指定一下字符集"utf8mb4",然后再导入到数据库。为以后索引使用(适用于专业服务) 。
2.5、应用发布规范
应用所属领域和发布菜单保持一致
2.6、应用迁移规范
2.6.1、主流程
场景:开发沙箱进行功能开发;测试沙箱进行功能验证;验证通过迁移至生产租户;生产租户发现BUG,需要重新在开发沙箱进行修复,再次走全流程。
2.6.2、先有生产后增补沙箱
场景:客户先购买了生产租户并在生产租户进行了开发 首次可以从生产环境将应用迁移至开发沙箱; 后续按照开发沙箱-》测试沙箱-》生产租户的方向进行迁移,尽量避免同一应用再次从生产迁移沙箱
2.7、集成配置/开放平台调用规范
- 1、保存类相关接口需要按照文档说明填写所有必填项
- 2、支持幂等的保存接口,需要按照一定规则生成幂等key. 相同数据生成的幂等key要保持一致。(可以采用请求参数转string后MD5加密,用结果值作为幂等key使用)
- 3、token的有效期是2个小时,建议第三方系统缓存token. 禁止每次调用接口都获取token
- 4、查询类接口建议每页查询数为500
- 5、批量保存类API,数量最大100