IRIS 代码格式化规范
概述
本技能基于作者总结的IRIS代码规范,提供ObjectScript代码的格式化、审查和修正能力。涵盖变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度,确保代码风格统一、可读性强、维护性高。
该技能的作者: 姚鑫
作者邮箱: 454115408@qq.com
触发条件
当用户提出以下请求时激活此技能:
- "格式化这段IRIS代码"
- "检查这段代码是否符合规范"
- "审查ObjectScript代码"
- "修正代码风格问题"
- "按照IRIS规范格式化"
- 任何涉及IRIS/Cache/ObjectScript代码格式化的需求
核心能力
1. 变量命名规范
1.1 基本原则
- 禁止使用
$、#等特殊符号开始或结束
- 严禁拼音与英文混合,不允许直接使用中文
- 参数名、成员变量、局部变量统一使用
lowerCamelCase
- 常量命名全部大写
- 杜绝不规范缩写,长度为7个以内单词不需要缩写
- 避免无意义变量(如a, b, c)
1.2 Global命名
- 临时global:对于临时Global,命名规范以^CacheTemp开头
^CacheTemp*,不允许有其它的命名。旧命名方式以^TEMP*、^Temp*、^temp*、^TMP*、^Tmp*、^tmp*、开头的均不合法。
- 进程global:
^||TMP,节点必须携带pid
1.3 特殊变量
- 布尔变量不要用
is开头,使用Flag后缀(如dispFlag)
- 引用global数据的变量用
表ID + Data方式(如bisData)
- 分割字符串索引统一用
i,长度用len
- 私有对象加
m前缀(如mExecute)
- 禁止使用系统保留字或SQL保留字(如
SQLCODE)
- 调用其他方法返回值用
ret,禁止使用err
- 变量不超过31个字符
- 百分比变量以
%z开头
.inc文件通用变量加前缀标识
2. 方法命名规范
2.1 基本规则
- 类名、方法名使用
UpperCamelCase
- 返回布尔类型方法以
Is开头,加As %Boolean,正向描述(存在返回$$$YES)
- 推荐使用动宾结构(Get, Set, Query等)
- 函数/方法名最长不超过30个字符
- 查询统一用
Query,获取数据用Get
2.2 方法组织
- 一个方法控制在50行以内
- 方法内传递参数过多时考虑用对象方式重构
- 禁止在循环里直接写SQL语句(
&sql()),SQL语句应当单独建立类来保存
- 非普通字符串的入参或返回值需要声明类型(数组、对象、流、%Status等)
2.3 错误处理
- 返回值不能单纯返回负数
- 字符串形式:
负数^错误信息
- JSON形式:
..RetFail("错误信息")
- %Status形式:
$$$ERROR($$$GeneralError,"错误信息")
3. 锁规范
- 禁止直接锁表结构的Global
- 加解锁必须加
+、-严格控制,必须成对出现
- 加锁必须带
+,否则导致解锁进程内所有锁
- 加锁必须写超时退出(如
:3),避免死锁
- 自定义功能锁格式:
^产品组代码(产品线,规范代码:唯一标识)
- 私有进程全局变量名不能用作锁名
- 禁止单独使用无参数锁
- 使用锁时一定要下标节点
4. 事务规范
- 严格禁止开放性事务(必须有tc或tro)
- 事务
ts、tc、tro位置保持近距离,在一屏幕范围内
- 严格禁止跨方法提交事务
- 事务命令简写并且小写(
ts、tc、tro)
- 同一个方法内不应该出现事务嵌套
- 事务应在保存程序的最外层
- 单条SQL语句的数据保存不需要事务
ts、tc首尾添加空行或注释
5. 陷阱规范
- 严格禁止陷阱内部报错导致死进程
Not ProcedureBlock类陷阱名称统一为Err + 方法名
- 默认类陷阱名称统一为
Error
- 通用陷阱写法:
- 设置
$zt = ""避免死循环
$tl > 0时执行tro避免开放性事务
- 执行
lock避免开放锁
6. 格式规范
6.1 基本格式
- 方法大括号一律换行显示
- 运算符(
=、+、-、*、/、_、:)左右加空格
- 逗号后加空格
- 方法内命令行采用一个Tab缩进(4空格宽度)
- 禁止命令大小写混用,统一小写
- 系统命令使用缩写(除
for、while外)
- 系统函数使用缩写(
$e, $p, $l, $o等)
6.2 SQL格式
- SQL语句一行5个字段
- 换行后3个Tab缩进
- 逗号在行末,不带入下行
- 每行不超过120字符
- SQL命令全部统一小写
6.3 字符串格式
- 单行字符串拼写最多5个字段
- 禁止用同一变量后加数字累加
- 获取多返回值用
%ArrayOfDataTypes或JSON,不建议字符串拼接
6.4 命令与函数缩写规范
系统命令缩写规则:
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 |
堆栈信息 |
6.5 控制结构
- 尽量使用对仗词(add/remove, get/set等)
- 禁止
{}和.同时出现,推荐使用块级语法
- 所有
if语句都要换行写
if嵌套不宜过多,建议不超过3层
- 多级
if else考虑用$case替换
- 与或逻辑运算统一使用
&&、||
- 块级语法命令要全拼(
for、while而非f、w)
- 后置表达式要加括号,等号两侧加空格
- 多条件后置表达式(如
continue: q: 后的条件):括号内部的条件运算符两侧加空格,括号与&&/||之间不加空格。例如:
- 正确:
q:(inci = "")&&(arcim = "")&&(phcdf = "") - 括号内=两侧有空格,括号与&&之间无空格
- 错误:
q:(inci = "") && (arcim = "") && (phcdf = "") - 括号与&&之间有空格,会导致编译错误
} else { 不换行,写在同一行
7. 空行规范
- 方法与方法之间空行隔断(1个空行)
- 空行分割功能相似、逻辑内容相近的代码片段
- 空行之前添加行注释
#; 规则
- 事务首尾一定要加空行或注释
8. 注释规范
8.1 注释格式
- 单行注释用
#;,句尾注释用//
- 类、方法头注释用
///
- 各类注释后应跟空格
8.2 注释原则
- 避免无意义注释,用规范代码命名描述
- 简明扼要,不要啰嗦
- 避免错误注释误导
8.3 类注释
/// desc: 类用途描述
/// author:姓名全拼
/// date:YYYY-MM-DD
Class XXX.XXX
8.4 方法注释
/// desc: 方法描述
/// author: 姓名
/// createDate: YYYY-MM-DD
/// params: 参数说明
/// return: 返回值说明
/// version: 版本
/// modify: 修改记录
/// debug: 调试方法
使用方法
代码审查流程
执行以下步骤审查和修正代码:
- 读取代码:获取用户提供的ObjectScript代码
- 逐条检查:按照上述规范逐项检查
- 标记问题:识别不符合规范的代码位置
- 提供修正:给出符合规范的修正版本
- 说明原因:解释每项修正的依据
- 输出完整代码:必须输出完整的修正后代码,包含所有类定义、方法、注释,不得省略任何部分
关键修正规则(强制执行)
1. 后置表达式处理(关键!)
多条件后置表达式必须严格遵守以下格式:
; 正确格式 - 括号内运算符两侧加空格,括号与&&之间不加空格
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)
- 括号与
&&/||之间绝对不能加空格:)&&( 不是 ) && (
- 这是IRIS编译器的硬性要求,必须严格遵守
2. 命令缩写规则
for、while、if、elseif、else、continue 使用全拼
- 其他命令使用缩写:
s/d/q/b/k/n/w/r/ts/tc/tro/l/o/u/h/j/m
3. 系统函数缩写
使用缩写形式:$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---2name: iris-code-formatter3description: 对InterSystems IRIS/Cache ObjectScript代码进行格式化检查、审查和自动修正。 当用户需要格式化IRIS代码、检查代码规范合规性、审查代码质量或修正不符合规范的代码时触发此技能。 支持变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度的规范检查。4---56# IRIS 代码格式化规范78## 概述910本技能基于作者总结的IRIS代码规范,提供ObjectScript代码的格式化、审查和修正能力。涵盖变量命名、方法命名、锁、事务、陷阱、格式、空行、注释等多个维度,确保代码风格统一、可读性强、维护性高。1112> **该技能的作者**: 姚鑫 13> **作者邮箱**: 454115408@qq.com1415## 触发条件1617当用户提出以下请求时激活此技能:18- "格式化这段IRIS代码"19- "检查这段代码是否符合规范"20- "审查ObjectScript代码"21- "修正代码风格问题"22- "按照IRIS规范格式化"23- 任何涉及IRIS/Cache/ObjectScript代码格式化的需求2425## 核心能力2627### 1. 变量命名规范2829#### 1.1 基本原则30- 禁止使用`$`、`#`等特殊符号开始或结束31- 严禁拼音与英文混合,不允许直接使用中文32- 参数名、成员变量、局部变量统一使用`lowerCamelCase`33- 常量命名全部大写34- 杜绝不规范缩写,长度为7个以内单词不需要缩写35- 避免无意义变量(如a, b, c)3637#### 1.2 Global命名38- 临时global:对于临时Global,命名规范以^CacheTemp开头`^CacheTemp*`,不允许有其它的命名。旧命名方式以^`TEMP*、^Temp*、^temp*、^TMP*、^Tmp*、^tmp*`、开头的均不合法。39- 进程global:`^||TMP`,节点必须携带pid4041#### 1.3 特殊变量42- 布尔变量不要用`is`开头,使用`Flag`后缀(如`dispFlag`)43- 引用global数据的变量用`表ID + Data`方式(如`bisData`)44- 分割字符串索引统一用`i`,长度用`len`45- 私有对象加`m`前缀(如`mExecute`)46- 禁止使用系统保留字或SQL保留字(如`SQLCODE`)47- 调用其他方法返回值用`ret`,禁止使用`err`48- 变量不超过31个字符49- 百分比变量以`%z`开头50- `.inc`文件通用变量加前缀标识5152### 2. 方法命名规范5354#### 2.1 基本规则55- 类名、方法名使用`UpperCamelCase`56- 返回布尔类型方法以`Is`开头,加`As %Boolean`,正向描述(存在返回$$$YES)57- 推荐使用动宾结构(Get, Set, Query等)58- 函数/方法名最长不超过30个字符59- 查询统一用`Query`,获取数据用`Get`6061#### 2.2 方法组织62- 一个方法控制在50行以内63- 方法内传递参数过多时考虑用对象方式重构64- 禁止在循环里直接写SQL语句(`&sql()`),SQL语句应当单独建立类来保存65- 非普通字符串的入参或返回值需要声明类型(数组、对象、流、%Status等)6667#### 2.3 错误处理68- 返回值不能单纯返回负数69- 字符串形式:`负数^错误信息`70- JSON形式:`..RetFail("错误信息")`71- %Status形式:`$$$ERROR($$$GeneralError,"错误信息")`7273### 3. 锁规范7475- 禁止直接锁表结构的Global76- 加解锁必须加`+`、`-`严格控制,必须成对出现77- 加锁必须带`+`,否则导致解锁进程内所有锁78- 加锁必须写超时退出(如`:3`),避免死锁79- 自定义功能锁格式:`^产品组代码(产品线,规范代码:唯一标识)`80- 私有进程全局变量名不能用作锁名81- 禁止单独使用无参数锁82- 使用锁时一定要下标节点8384### 4. 事务规范8586- 严格禁止开放性事务(必须有tc或tro)87- 事务`ts`、`tc`、`tro`位置保持近距离,在一屏幕范围内88- 严格禁止跨方法提交事务89- 事务命令简写并且小写(`ts`、`tc`、`tro`)90- 同一个方法内不应该出现事务嵌套91- 事务应在保存程序的最外层92- 单条SQL语句的数据保存不需要事务93- `ts`、`tc`首尾添加空行或注释9495### 5. 陷阱规范9697- 严格禁止陷阱内部报错导致死进程98- `Not ProcedureBlock`类陷阱名称统一为`Err + 方法名`99- 默认类陷阱名称统一为`Error`100- 通用陷阱写法:101 - 设置`$zt = ""`避免死循环102 - `$tl > 0`时执行`tro`避免开放性事务103 - 执行`lock`避免开放锁104105### 6. 格式规范106107#### 6.1 基本格式108- 方法大括号一律换行显示109- 运算符(`=`、`+`、`-`、`*`、`/`、`_`、`:`)左右加空格110- 逗号后加空格111- 方法内命令行采用一个Tab缩进(4空格宽度)112- 禁止命令大小写混用,统一小写113- 系统命令使用缩写(除`for`、`while`外)114- 系统函数使用缩写(`$e`, `$p`, `$l`, `$o`等)115116#### 6.2 SQL格式117- SQL语句一行5个字段118- 换行后3个Tab缩进119- 逗号在行末,不带入下行120- 每行不超过120字符121- SQL命令全部统一小写122123#### 6.3 字符串格式124- 单行字符串拼写最多5个字段125- 禁止用同一变量后加数字累加126- 获取多返回值用`%ArrayOfDataTypes`或JSON,不建议字符串拼接127128#### 6.4 命令与函数缩写规范129130**系统命令缩写规则**:131- `for`、`while` 、`if` 、`elseif`、`else`、`continue` 命令使用全拼(语义明确,表示循环结构)132- 其他系统命令使用缩写形式133134| 全拼 | 缩写 | 说明 |135|------|------|------|136| set | s | 赋值 |137| do | d | 执行 |138| quit | q | 退出/返回 |139| break | b | 跳出循环 |140| kill | k | 删除变量 |141| new | n | 新建变量 |142| write | w | 输出 |143| read | r | 读取 |144| tstart | ts | 事务开始 |145| tcommit | tc | 事务提交 |146| trollback | tro | 事务回滚 |147| lock | l | 加锁 |148| open | o | 打开设备 |149| close | c | 关闭设备 |150| use | u | 使用设备 |151| hang | h | 暂停 |152| job | j | 启动作业 |153| merge | m | 合并 |154155**系统函数缩写规则**:156- 所有系统函数使用缩写形式157158| 全拼 | 缩写 | 说明 |159|------|------|------|160| $extract | $e | 提取子串 |161| $piece | $p | 按分隔符提取 |162| $length | $l | 获取长度 |163| $order | $o | 遍历global |164| $get | $g | 安全获取值 |165| $data | $d | 判断变量是否存在 |166| $find | $f | 查找子串 |167| $ascii | $a | 获取ASCII码 |168| $char | $c | ASCII转字符 |169| $translate | $tr | 字符替换 |170| $justify | $j | 格式化对齐 |171| $zboolean | $zb | 位运算 |172| $zconvert | $zcvt | 编码转换 |173| $zhex | $zh | 十六进制转换 |174| $zdate | $zd | 日期格式化 |175| $ztime | $zt | 时间格式化 |176| $ztimestamp | $zts | 时间戳 |177| $increment | $i | 自增 |178| $random | $r | 随机数 |179| $stack | $st | 堆栈信息 |180181#### 6.5 控制结构182- 尽量使用对仗词(add/remove, get/set等)183- 禁止`{}`和`.`同时出现,推荐使用块级语法184- 所有`if`语句都要换行写185- `if`嵌套不宜过多,建议不超过3层186- 多级`if else`考虑用`$case`替换187- 与或逻辑运算统一使用`&&`、`||`188- 块级语法命令要全拼(`for`、`while`而非`f`、`w`)189- 后置表达式要加括号,等号两侧加空格190- **多条件后置表达式**(如 `continue:` `q:` 后的条件):括号**内部**的条件运算符两侧**加空格**,括号与`&&`/`||`之间**不加空格**。例如:191 - 正确:`q:(inci = "")&&(arcim = "")&&(phcdf = "")` - 括号内`=`两侧有空格,括号与`&&`之间无空格192 - 错误:`q:(inci = "") && (arcim = "") && (phcdf = "")` - 括号与`&&`之间有空格,会导致编译错误193- `} else {` 不换行,写在同一行194195### 7. 空行规范196197- 方法与方法之间空行隔断(1个空行)198- 空行分割功能相似、逻辑内容相近的代码片段199- 空行之前添加行注释`#; 规则`200- 事务首尾一定要加空行或注释201202### 8. 注释规范203204#### 8.1 注释格式205- 单行注释用`#;`,句尾注释用`//`206- 类、方法头注释用`///`207- 各类注释后应跟空格208209#### 8.2 注释原则210- 避免无意义注释,用规范代码命名描述211- 简明扼要,不要啰嗦212- 避免错误注释误导213214#### 8.3 类注释215```objectscript216/// desc: 类用途描述217/// author:姓名全拼218/// date:YYYY-MM-DD219Class XXX.XXX220```221222#### 8.4 方法注释223```objectscript224/// desc: 方法描述225/// author: 姓名226/// createDate: YYYY-MM-DD227/// params: 参数说明228/// return: 返回值说明229/// version: 版本230/// modify: 修改记录231/// debug: 调试方法232```233234## 使用方法235236### 代码审查流程237238执行以下步骤审查和修正代码:2392401. **读取代码**:获取用户提供的ObjectScript代码2412. **逐条检查**:按照上述规范逐项检查2423. **标记问题**:识别不符合规范的代码位置2434. **提供修正**:给出符合规范的修正版本2445. **说明原因**:解释每项修正的依据2456. **输出完整代码**:**必须**输出完整的修正后代码,包含所有类定义、方法、注释,不得省略任何部分246247### 关键修正规则(强制执行)248249#### 1. 后置表达式处理(关键!)250251多条件后置表达式必须严格遵守以下格式:252253```objectscript254; 正确格式 - 括号内运算符两侧加空格,括号与&&之间不加空格255continue:(hospId '= "")&&(hospId '= ($p(^CTLOC(locId),"^",22)))256q:(inci = "")&&(arcim = "")&&(phcdf = "")257258; 错误格式 - 会导致IRIS编译错误259continue:(hospId '= "") && (hospId '= ($p(^CTLOC(locId),"^",22)))260q:(inci = "") && (arcim = "") && (phcdf = "")261```262263**修正逻辑:**264- 识别后置表达式(`q:` `continue:` `b:` 等命令后的条件)265- 确保每个条件用括号包裹:`(条件)`266- 括号内运算符两侧加空格:`(a = "")` `(b <= 0)`267- 括号与`&&`/`||`之间**绝对不能**加空格:`)&&(` 不是 `) && (`268- 这是IRIS编译器的硬性要求,必须严格遵守269270#### 2. 命令缩写规则271272- `for`、`while`、`if`、`elseif`、`else`、`continue` 使用全拼273- 其他命令使用缩写:`s`/`d`/`q`/`b`/`k`/`n`/`w`/`r`/`ts`/`tc`/`tro`/`l`/`o`/`u`/`h`/`j`/`m`274275#### 3. 系统函数缩写276277使用缩写形式:`$e`/`$p`/`$l`/`$o`/`$g`/`$d`/`$a`/`$c`/`$tr`/`$j`/`$zb`/`$zcvt`/`$zh`278279### 输出格式280281审查结果应包含:282283```284285## 代码审查报告286287### 问题汇总288- [严重] 问题1描述(行号)289- [警告] 问题2描述(行号)290291### 详细说明292293#### 1. 变量命名问题294**位置**:第X行295**问题**:描述296**规范依据**:引用具体规则297**建议修正**:298299// 修正后的代码300#### 2. 方法命名问题301302...303### 修正后完整代码304305**IMPORTANT**: 必须输出完整的修正后代码,不要省略任何部分。将用户提供的完整代码按照规范修正后全部输出。306// 完整修正后的代码(必须包含所有方法,不得省略)307308```309310## 规范速查表311312| 类别 | 规则 | 正确示例 | 错误示例 |313|------|------|----------|----------|314| 变量名 | lowerCamelCase | `startDate` | `startdate` |315| 常量 | 全大写 | `MAXCOUNT` | `MaxCount` |316| 布尔变量 | Flag后缀 | `dispFlag` | `isDisp` |317| 方法名 | UpperCamelCase, 动宾结构 | `GetName()` | `getname()` |318| 布尔方法 | Is开头 | `IsExist() As %Boolean` | `GetExistFlag()` |319| 事务 | 简写小写 | `ts` / `tc` | `TSTART` |320| 锁 | 带+/-和超时 | `l +^XXX:3` | `l ^XXX` |321| 注释符 | #; 或 // | `#; 说明 ` | `; 说明` |322| 空格 | 运算符两侧 | `a = b` | `a=b` |323| 命令 | 除for/while外使用缩写 | `s`, `d`, `q`, `for` | `set`, `do`, `quit`, `f` |324| 系统函数 | 使用缩写 | `$e`, `$p`, `$l`, `$o` | `$extract`, `$piece`, `$length`, `$order` |325| 逻辑运算 | && \|\| | `(a)&&(b)` | `a,b` |326| 后置表达式 | 括号内空格,括号外无空格 | `q:(a = "")&&(b = "")` | `q:(a = "") && (b = "")` |327328## 参考资源329330- `references/代码规范 - 变量.md` 331- `references/代码规范 - 方法.md` 332- `references/代码规范 - 格式.md` 333- `references/代码规范 - 空行.md` 334- `references/代码规范 - 事务.md` 335- `references/代码规范 - 锁.md` 336- `references/代码规范 - 陷阱.md` 337- `references/代码规范 - 注释.md`