文章目录
- 第六章 ObjectScript 标识符的规则和指南
- 例程名称和标签的规则
- 保留的例程名称使用
- 类名规则
- 要避免的包、类和模式名称
- 类成员命名规则
- 应避免使用的成员名称
- [`IRISSYS` 中的自定义项目](#
IRISSYS
中的自定义项目)
第六章 ObjectScript 标识符的规则和指南
例程名称和标签的规则
对于例程的名称或标签,ObjectScript
中适用以下规则:
- 第一个字符必须是字母或百分号 (
%
)。 - 如果例程名称以
%
开头,则使用z
或Z
作为其后的下一个字符。 - 其余字符必须是字母或数字(有一个例外;请参阅下一个项目符号)。这些其他字符可能包括
ASCII 128
以上的任何字母字符。 - 例程的名称可以包含一个或多个句点 (
.
) 字符,但不能作为第一个或最后一个字符。 - 名称区分大小写。
- 例程名称的前
255
个字符内必须是唯一的(在适当的上下文中)。 - 标签的前
31
个字符内必须是唯一的(在适当的上下文中)。
请注意,某些 Z
和 %Z
例程名称是保留供使用的。
保留的例程名称使用
IRIS 保留以下例程名称供使用。这些例程并不存在,但是如果定义了它们,系统会在特定事件发生时自动调用它们。
^ZWELCOME
例程旨在包含在终端启动时执行的自定义代码。请参阅使用终端。^ZAUTHENTICATE
和^ZAUTHORIZE
例程旨在包含用于身份验证和授权的自定义代码(以支持委托身份验证和委托授权)。对于这些例程,IRIS
提供了模板。请参阅使用委派授权和委派身份验证。^ZMIRROR
例程旨在包含在使用IRIS
镜像时自定义故障转移行为的代码。请参阅高可用性指南。^%ZSTART
和^%ZSTOP
例程旨在包含在发生某些事件(例如用户登录时)时执行的自定义代码。这些例程不是预定义的。如果定义了它们,系统可以在这些事件发生时调用它们。请参阅使用^%ZSTART
和^%ZSTOP
例程自定义启动和停止行为。^%ZLANGV00
和其他名称以^%ZLANG
开头的例程旨在包含自定义变量、命令和函数。请参阅使用 `%ZLANG 例程扩展语言。- 如果使用
^JCONVERT
例程,则^%ZJREAD
例程旨在包含操作日志文件的逻辑。请参阅日记。
类名规则
对于任何类,完整的类名具有以下形式:packagename.classname
类名的规则如下:
packagename
(包名)和classname
(短类名)必须以字母或百分号(%
)开头。
如果包名称以 %
开头,请使用 z
或 Z
作为其后的下一个字符。
- 包名可以包含句点。
如果是这样,则紧接在任何句点之后的字符必须是字母。
每个以句点分隔的包名称都被视为子包名称,并遵守唯一性规则。
- 其余字符必须是字母或数字,包括
ASCII 128
以上的字母字符。 - 包名和短类名必须是唯一的。同样,任何子包名称在父包名称中都必须是唯一的。
请注意,系统会保留定义每个类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。然而,两个标识符不能仅在大小写上不同。例如,出于唯一性的目的,标识符 id1
和 ID1
被认为是相同的。
- 有长度限制:
包名称(包括所有句点)的前 189
个字符内必须是唯一的。
短类名称的前 60
个字符内必须是唯一的。
要避免的包、类和模式名称
对于持久类,请避免使用 SQL
保留字作为类的短名称。
如果使用 SQL
保留字作为类的短名称,则需要为该类指定 SqlTableName
关键字。另外,短类名和 SQL
表名之间的不匹配在以后阅读代码时需要更加小心。
避免使用以下包名称(取决于命名空间)。也不要使用它们作为模式名称。
-
在任何命名空间中,请避免使用包名称
IRIS
。这是保留供InterSystems
使用的。 -
在任何命名空间中,都应避免使用包名信息。这是一个映射到所有命名空间的系统包。
-
在任何启用互操作性的命名空间中,请避免使用包名称
Ens、EnsLib、EnsPortal
和CSPX
。这些软件包在升级过程中被完全替换。如果在这些包中定义类,则需要在升级之前导出这些类,然后在升级后导入它们。 -
在任何启用互操作性的命名空间中,避免以
Ens
开头的包名称(区分大小写)。有关更多信息,请参阅开发产品中的环境注意事项。 -
在
HealthShare
命名空间中,避免使用包名称HS
、HSFHIR
、HSMOD
和SchemaMap
类成员命名规则
对于类成员,除非该项目的名称被分隔,否则该名称必须遵循以下规则:
- 该名称必须以字母或百分号 (
%
) 开头。
对于映射到 SQL
的类成员,还有一个额外的考虑因素(例如,这包括持久类的大多数属性)。如果第一个字符是 %
,则第二个字符必须是 Z
或 z
。
-
其余字符必须是字母或数字,包括
ASCII 128
以上的字母字符。 -
成员名称必须是唯一的(在适当的上下文中)。
请注意,系统会保留定义类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。但是,两个类成员的名称不能仅大小写不同。例如,出于唯一性的目的,标识符 id1
和 ID1
被认为是相同的。
- 方法或属性名称的前
180
个字符内必须是唯一的。 - 属性名称和属性上的任何索引的组合长度不应超过
180
个字符。 - 每个成员的全名(包括非限定成员名和全类名)必须小于或等于
220
个字符。 - 强烈建议不要为两个成员提供相同的名称。这可能会产生意想不到的结果。
此外,成员名称可以被分隔。要创建分隔成员名称,请对名称的第一个和最后一个字符使用双引号。然后名称可以包含否则不允许的字符。例如:
java
Property "My Property" As %String;
应避免使用的成员名称
对于持久类,避免使用 SQL
保留字作为成员的名称。
如果对这些名称之一使用 SQL
保留字,则必须执行额外的工作来指定如何将类映射到 SQL
。例如,对于属性,需要指定 SqlFieldName
关键字。另外,类中的标识符与 SQL
中的标识符不匹配,以后阅读代码时需要更加小心。
有关 SQL
保留字的列表,请参阅保留字。请注意,此列表包含许多名称以 %
开头的项目,例如 %SQLUPPER
和 %FIND
。此类项目是 SQL
的 InterSystems
扩展,并且可能会在未来版本中添加其他扩展。
IRISSYS
中的自定义项目
可以在 IRISSYS
数据库中创建项目。升级后,某些项目将被删除,除非它们遵循自定义项目的命名约定。
要将代码或数据添加到此数据库以便项目不被覆盖,请执行以下操作之一:
-
转到
%SYS
命名空间并创建项目。对于此命名空间,默认例程数据库和默认全局数据库都是IRISSYS
。使用以下命名约定可以防止项目受到升级安装的影响:- 类:以
Z
或z
开头的包 - 例程:名称以
Z
、z
、%Z
或%z
开头 - 全局变量:名称以
^Z
、^z
、^%Z
或^%z
开头
- 类:以
-
在任何命名空间中,创建具有以下名称的项目:
-
例程:名称以
%Z
或%z
开头 -
全局变量:名称以
^%Z
或^%z
开头
由于任何名称空间中的标准映射,这些项目将写入 IRISSYS
。
MAC
代码和包含文件不受升级影响。