第六章 ObjectScript 标识符的规则和指南

文章目录

第六章 ObjectScript 标识符的规则和指南

例程名称和标签的规则

对于例程的名称或标签,ObjectScript 中适用以下规则:

  • 第一个字符必须是字母或百分号 (%)。
  • 如果例程名称以 % 开头,则使用 zZ 作为其后的下一个字符。
  • 其余字符必须是字母或数字(有一个例外;请参阅下一个项目符号)。这些其他字符可能包括 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(短类名)必须以字母或百分号(%)开头。

如果包名称以 % 开头,请使用 zZ 作为其后的下一个字符。

  • 包名可以包含句点。

如果是这样,则紧接在任何句点之后的字符必须是字母。

每个以句点分隔的包名称都被视为子包名称,并遵守唯一性规则。

  • 其余字符必须是字母或数字,包括 ASCII 128 以上的字母字符。
  • 包名和短类名必须是唯一的。同样,任何子包名称在父包名称中都必须是唯一的。

请注意,系统会保留定义每个类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。然而,两个标识符不能仅在大小写上不同。例如,出于唯一性的目的,标识符 id1ID1 被认为是相同的。

  • 有长度限制:

包名称(包括所有句点)的前 189 个字符内必须是唯一的。

短类名称的前 60 个字符内必须是唯一的。

要避免的包、类和模式名称

对于持久类,请避免使用 SQL 保留字作为类的短名称。

如果使用 SQL 保留字作为类的短名称,则需要为该类指定 SqlTableName 关键字。另外,短类名和 SQL 表名之间的不匹配在以后阅读代码时需要更加小心。

避免使用以下包名称(取决于命名空间)。也不要使用它们作为模式名称。

  • 在任何命名空间中,请避免使用包名称 IRIS。这是保留供 InterSystems 使用的。

  • 在任何命名空间中,都应避免使用包名信息。这是一个映射到所有命名空间的系统包。

  • 在任何启用互操作性的命名空间中,请避免使用包名称 Ens、EnsLib、EnsPortalCSPX。这些软件包在升级过程中被完全替换。如果在这些包中定义类,则需要在升级之前导出这些类,然后在升级后导入它们。

  • 在任何启用互操作性的命名空间中,避免以 Ens 开头的包名称(区分大小写)。有关更多信息,请参阅开发产品中的环境注意事项。

  • HealthShare 命名空间中,避免使用包名称 HSHSFHIRHSMOD SchemaMap

类成员命名规则

对于类成员,除非该项目的名称被分隔,否则该名称必须遵循以下规则:

  • 该名称必须以字母或百分号 (%) 开头。

对于映射到 SQL 的类成员,还有一个额外的考虑因素(例如,这包括持久类的大多数属性)。如果第一个字符是 %,则第二个字符必须是 Zz

  • 其余字符必须是字母或数字,包括 ASCII 128 以上的字母字符。

  • 成员名称必须是唯一的(在适当的上下文中)。

请注意,系统会保留定义类时使用的大小写,并且必须与类定义中给出的大小写完全匹配。但是,两个类成员的名称不能仅大小写不同。例如,出于唯一性的目的,标识符 id1ID1 被认为是相同的。

  • 方法或属性名称的前 180 个字符内必须是唯一的。
  • 属性名称和属性上的任何索引的组合长度不应超过 180 个字符。
  • 每个成员的全名(包括非限定成员名和全类名)必须小于或等于 220 个字符。
  • 强烈建议不要为两个成员提供相同的名称。这可能会产生意想不到的结果。

此外,成员名称可以被分隔。要创建分隔成员名称,请对名称的第一个和最后一个字符使用双引号。然后名称可以包含否则不允许的字符。例如:

java 复制代码
Property "My Property" As %String;

应避免使用的成员名称

对于持久类,避免使用 SQL 保留字作为成员的名称。

如果对这些名称之一使用 SQL 保留字,则必须执行额外的工作来指定如何将类映射到 SQL。例如,对于属性,需要指定 SqlFieldName 关键字。另外,类中的标识符与 SQL 中的标识符不匹配,以后阅读代码时需要更加小心。

有关 SQL 保留字的列表,请参阅保留字。请注意,此列表包含许多名称以 % 开头的项目,例如 %SQLUPPER%FIND。此类项目是 SQLInterSystems 扩展,并且可能会在未来版本中添加其他扩展。

IRISSYS 中的自定义项目

可以在 IRISSYS 数据库中创建项目。升级后,某些项目将被删除,除非它们遵循自定义项目的命名约定。

要将代码或数据添加到此数据库以便项目不被覆盖,请执行以下操作之一:

  • 转到 %SYS 命名空间并创建项目。对于此命名空间,默认例程数据库和默认全局数据库都是 IRISSYS。使用以下命名约定可以防止项目受到升级安装的影响:

    • 类:以 Zz 开头的包
    • 例程:名称以 Zz%Z%z 开头
    • 全局变量:名称以 ^Z^z^%Z^%z 开头
  • 在任何命名空间中,创建具有以下名称的项目:

  • 例程:名称以 %Z%z 开头

  • 全局变量:名称以 ^%Z^%z 开头

由于任何名称空间中的标准映射,这些项目将写入 IRISSYS

MAC 代码和包含文件不受升级影响。

相关推荐
Dola_Pan2 小时前
Linux文件IO(二)-文件操作使用详解
java·linux·服务器
wang_book2 小时前
Gitlab学习(007 gitlab项目操作)
java·运维·git·学习·spring·gitlab
机器视觉知识推荐、就业指导2 小时前
Qt/C++事件过滤器与控件响应重写的使用、场景的不同
开发语言·数据库·c++·qt
jnrjian2 小时前
export rman 备份会占用buff/cache 导致内存压力
数据库·oracle
蜗牛^^O^2 小时前
Docker和K8S
java·docker·kubernetes
城南云小白3 小时前
Linux网络服务只iptables防火墙工具
linux·服务器·网络
从心归零3 小时前
sshj使用代理连接服务器
java·服务器·sshj
咩咩大主教3 小时前
C++基于select和epoll的TCP服务器
linux·服务器·c语言·开发语言·c++·tcp/ip·io多路复用
isNotNullX3 小时前
一文解读OLAP的工具和应用软件
大数据·数据库·etl
羌俊恩3 小时前
视频服务器:GB28181网络视频协议
服务器·网络·音视频