apex class 与 trigger在命名上有什么要求?
作者:互联网
在 Salesforce 中,Apex 类和触发器的命名有一些特定的要求和最佳实践。遵循这些规则不仅可以确保代码的可读性和可维护性,还能避免潜在的冲突和问题。
Apex 类命名要求
-
唯一性:
- 类名必须在整个组织中是唯一的。两个类不能有相同的名称,即使它们位于不同的命名空间中(对于非全局类)。
-
大小写敏感:
- 类名是区分大小写的。例如,
MyClass
和myclass
是两个不同的类名。
- 类名是区分大小写的。例如,
-
字符限制:
- 类名只能包含字母、数字和下划线(_),但不能以数字开头。
- 类名不能包含空格或其他特殊字符。
-
长度限制:
- 类名的最大长度为 255 个字符,但建议保持简短且有意义。
-
命名约定:
- 使用驼峰命名法(Camel Case),即每个单词首字母大写,不使用下划线。例如:
AccountService
、ContactHandler
。 - 对于常量或静态变量,可以使用全大写字母并用下划线分隔单词。例如:
MAX_RECORDS
。
- 使用驼峰命名法(Camel Case),即每个单词首字母大写,不使用下划线。例如:
-
描述性:
- 类名应清晰地描述其功能或用途。例如:
AccountTriggerHandler
、OpportunityService
。
- 类名应清晰地描述其功能或用途。例如:
-
避免保留字:
- 类名不能与 Salesforce 的保留字相同。例如,不能使用
Object
、String
等作为类名。
- 类名不能与 Salesforce 的保留字相同。例如,不能使用
触发器命名要求
-
唯一性:
- 触发器名必须在对象级别上是唯一的。同一对象上不能有两个同名的触发器。
-
大小写敏感:
- 触发器名是区分大小写的。例如,
AccountTrigger
和accounttrigger
是两个不同的触发器名。
- 触发器名是区分大小写的。例如,
-
字符限制:
- 触发器名只能包含字母、数字和下划线(_),但不能以数字开头。
- 触发器名不能包含空格或其他特殊字符。
-
长度限制:
- 触发器名的最大长度为 255 个字符,但建议保持简短且有意义。
-
命名约定:
- 使用驼峰命名法(Camel Case),即每个单词首字母大写,不使用下划线。例如:
AccountTrigger
、ContactTrigger
。 - 建议在触发器名中包含触发事件类型,以便更容易识别其行为。例如:
AccountBeforeInsertTrigger
、ContactAfterUpdateTrigger
。
- 使用驼峰命名法(Camel Case),即每个单词首字母大写,不使用下划线。例如:
-
描述性:
- 触发器名应清晰地描述其关联的对象和操作。例如:
AccountTrigger
表示与Account
对象相关的触发器。
- 触发器名应清晰地描述其关联的对象和操作。例如:
-
避免保留字:
- 触发器名不能与 Salesforce 的保留字相同。例如,不能使用
Object
、String
等作为触发器名。
- 触发器名不能与 Salesforce 的保留字相同。例如,不能使用
最佳实践
-
统一命名规范:
- 在整个项目中使用一致的命名规范,有助于提高代码的可读性和可维护性。例如,所有处理逻辑都放在以
Handler
结尾的类中,如AccountTriggerHandler
。
- 在整个项目中使用一致的命名规范,有助于提高代码的可读性和可维护性。例如,所有处理逻辑都放在以
-
模块化设计:
- 将复杂的业务逻辑移到单独的类中,使触发器保持简洁。例如,触发器只负责调用处理器类中的方法,而不直接实现复杂逻辑。
-
文档化:
- 在类和触发器中添加注释,解释其功能和用途。这不仅有助于其他开发人员理解代码,也有助于未来的维护。
示例
Apex 类命名示例
public class AccountService {
// 方法和属性...
}
public class ContactHandler {
// 方法和属性...
}
public class OpportunityProcessor {
// 方法和属性...
}
Apex
触发器命名示例
trigger AccountBeforeInsertTrigger on Account (before insert) {
AccountTriggerHandler.handleBeforeInsert(Trigger.new);
}
trigger ContactAfterUpdateTrigger on Contact (after update) {
ContactTriggerHandler.handleAfterUpdate(Trigger.new, Trigger.oldMap);
}
标签: 来源: