文章目录
- 第六章 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 代码和包含文件不受升级影响。