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

相关推荐
The森9 分钟前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix
惊讶的猫12 分钟前
redis分片集群
数据库·redis·缓存·分片集群·海量数据存储·高并发写
JavaGuide16 分钟前
一款悄然崛起的国产规则引擎,让业务编排效率提升 10 倍!
java·spring boot
不爱缺氧i21 分钟前
完全卸载MariaDB
数据库·mariadb
吃虫子的人21 分钟前
记录使用Arthas修改线上源码重新加载的一次过程
java·arthas
期待のcode23 分钟前
Redis的主从复制与集群
运维·服务器·redis
翼龙云_cloud25 分钟前
腾讯云代理商: Linux 云服务器搭建 FTP 服务指南
linux·服务器·腾讯云
纤纡.27 分钟前
Linux中SQL 从基础到进阶:五大分类详解与表结构操作(ALTER/DROP)全攻略
linux·数据库·sql
jiunian_cn41 分钟前
【Redis】渐进式遍历
数据库·redis·缓存