本技能基于作者总结的IRIS代码规范,提供ObjectScript代码的格式化、审查和修正能力。涵盖变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度,确保代码风格统一、可读性强、维护性高。
> 该技能的作者: 姚鑫
> 作者邮箱: 454115408@qq.com
当用户提出以下请求时激活此技能:
$、#等特殊符号开始或结束
lowerCamelCase
^CacheTemp,不允许有其它的命名。旧命名方式以^TEMP、^Temp、^temp、^TMP、^Tmp、^tmp*、开头的均不合法。
^||TMP,节点必须携带pid
is开头,使用Flag后缀(如dispFlag)
表ID + Data方式(如bisData)
i,长度用len
m前缀(如mExecute)
SQLCODE)
ret,禁止使用err
%z开头
.inc文件通用变量加前缀标识
UpperCamelCase
Is开头,加As %Boolean,正向描述(存在返回$$$YES)
Query,获取数据用Get
&sql()),SQL语句应当单独建立类来保存
负数^错误信息
..RetFail("错误信息")
$$$ERROR($$$GeneralError,"错误信息")
+、-严格控制,必须成对出现
+,否则导致解锁进程内所有锁
:3),避免死锁
^产品组代码(产品线,规范代码:唯一标识)
ts、tc、tro位置保持近距离,在一屏幕范围内
ts、tc、tro)
ts、tc首尾添加空行或注释
Not ProcedureBlock类陷阱名称统一为Err + 方法名
Error
$zt = ""避免死循环
$tl > 0时执行tro避免开放性事务
lock避免开放锁
=、+、-、*、/、_、:)左右加空格
for、while外)
$e, $p, $l, $o等)
%ArrayOfDataTypes或JSON,不建议字符串拼接
系统命令缩写规则:
for、while 、if 、elseif、else、continue 命令使用全拼(语义明确,表示循环结构)
| 全拼 | 缩写 | 说明 |
|------|------|------|
| set | s | 赋值 |
| do | d | 执行 |
| quit | q | 退出/返回 |
| break | b | 跳出循环 |
| kill | k | 删除变量 |
| new | n | 新建变量 |
| write | w | 输出 |
| read | r | 读取 |
| tstart | ts | 事务开始 |
| tcommit | tc | 事务提交 |
| trollback | tro | 事务回滚 |
| lock | l | 加锁 |
| open | o | 打开设备 |
| close | c | 关闭设备 |
| use | u | 使用设备 |
| hang | h | 暂停 |
| job | j | 启动作业 |
| merge | m | 合并 |
系统函数缩写规则:
| 全拼 | 缩写 | 说明 |
|------|------|------|
| $extract | $e | 提取子串 |
| $piece | $p | 按分隔符提取 |
| $length | $l | 获取长度 |
| $order | $o | 遍历global |
| $get | $g | 安全获取值 |
| $data | $d | 判断变量是否存在 |
| $find | $f | 查找子串 |
| $ascii | $a | 获取ASCII码 |
| $char | $c | ASCII转字符 |
| $translate | $tr | 字符替换 |
| $justify | $j | 格式化对齐 |
| $zboolean | $zb | 位运算 |
| $zconvert | $zcvt | 编码转换 |
| $zhex | $zh | 十六进制转换 |
| $zdate | $zd | 日期格式化 |
| $ztime | $zt | 时间格式化 |
| $ztimestamp | $zts | 时间戳 |
| $increment | $i | 自增 |
| $random | $r | 随机数 |
| $stack | $st | 堆栈信息 |
{}和.同时出现,推荐使用块级语法
if语句都要换行写
if嵌套不宜过多,建议不超过3层
if else考虑用$case替换
&&、||
for、while而非f、w)
continue: q: 后的条件):括号内部的条件运算符两侧加空格,括号与&&/||之间不加空格。例如:
q:(inci = "")&&(arcim = "")&&(phcdf = "") - 括号内=两侧有空格,括号与&&之间无空格
q:(inci = "") && (arcim = "") && (phcdf = "") - 括号与&&之间有空格,会导致编译错误
} else { 不换行,写在同一行
#; 规则
#;,句尾注释用//
///
/// desc: 类用途描述
/// author:姓名全拼
/// date:YYYY-MM-DD
Class XXX.XXX
/// desc: 方法描述
/// author: 姓名
/// createDate: YYYY-MM-DD
/// params: 参数说明
/// return: 返回值说明
/// version: 版本
/// modify: 修改记录
/// debug: 调试方法
执行以下步骤审查和修正代码:
多条件后置表达式必须严格遵守以下格式:
; 正确格式 - 括号内运算符两侧加空格,括号与&&之间不加空格
continue:(hospId '= "")&&(hospId '= ($p(^CTLOC(locId),"^",22)))
q:(inci = "")&&(arcim = "")&&(phcdf = "")
; 错误格式 - 会导致IRIS编译错误
continue:(hospId '= "") && (hospId '= ($p(^CTLOC(locId),"^",22)))
q:(inci = "") && (arcim = "") && (phcdf = "")
修正逻辑:
q: continue: b: 等命令后的条件)
(条件)
(a = "") (b <= 0)
&&/||之间绝对不能加空格:)&&( 不是 ) && (
for、while、if、elseif、else、continue 使用全拼
s/d/q/b/k/n/w/r/ts/tc/tro/l/o/u/h/j/m
使用缩写形式:$e/$p/$l/$o/$g/$d/$a/$c/$tr/$j/$zb/$zcvt/$zh
审查结果应包含:
## 代码审查报告
### 问题汇总
- [严重] 问题1描述(行号)
- [警告] 问题2描述(行号)
### 详细说明
#### 1. 变量命名问题
**位置**:第X行
**问题**:描述
**规范依据**:引用具体规则
**建议修正**:
// 修正后的代码
#### 2. 方法命名问题
...
### 修正后完整代码
**IMPORTANT**: 必须输出完整的修正后代码,不要省略任何部分。将用户提供的完整代码按照规范修正后全部输出。
// 完整修正后的代码(必须包含所有方法,不得省略)
| 类别 | 规则 | 正确示例 | 错误示例 |
|------|------|----------|----------|
| 变量名 | lowerCamelCase | startDate | startdate |
| 常量 | 全大写 | MAXCOUNT | MaxCount |
| 布尔变量 | Flag后缀 | dispFlag | isDisp |
| 方法名 | UpperCamelCase, 动宾结构 | GetName() | getname() |
| 布尔方法 | Is开头 | IsExist() As %Boolean | GetExistFlag() |
| 事务 | 简写小写 | ts / tc | TSTART |
| 锁 | 带+/-和超时 | l +^XXX:3 | l ^XXX |
| 注释符 | #; 或 // | #; 说明 | ; 说明 |
| 空格 | 运算符两侧 | a = b | a=b |
| 命令 | 除for/while外使用缩写 | s, d, q, for | set, do, quit, f |
| 系统函数 | 使用缩写 | $e, $p, $l, $o | $extract, $piece, $length, $order |
| 逻辑运算 | && \|\| | (a)&&(b) | a,b |
| 后置表达式 | 括号内空格,括号外无空格 | q:(a = "")&&(b = "") | q:(a = "") && (b = "") |
references/代码规范 - 变量.md
references/代码规范 - 方法.md
references/代码规范 - 格式.md
references/代码规范 - 空行.md
references/代码规范 - 事务.md
references/代码规范 - 锁.md
references/代码规范 - 陷阱.md
references/代码规范 - 注释.md
共 1 个版本