Salesforce中是否有任何方法可以在包或命名空间下对顶点类进行分组?我们可以将托管包用于内部组织目的吗?
答案 0 :(得分:10)
这是force.com堆栈中的一个限制,即使不是不切实际,也会使中大型项目变得痛苦。使用托管包来获取包前缀并不能真正解决任何问题,因此它并不值得麻烦。
我通常会尝试将项目组织到一个级别的命名空间中。代替实际的命名空间,我将为每个将要命名空间的名称赋予3-5个字符的名称,以用作前缀。属于“命名空间”的任何类都有前缀。例如,如果我需要payroll
命名空间,我会使用PYRL
前缀。名为PaycheckCalculator
的班级变为PYRL_PaycheckCalculator
。
这种类型的约定的实际优点是它有助于防止名称冲突,并且当在排序列表中查看时,类按其“命名空间”分组,例如在IDE中,或者设置>开发> Apex课程
不幸的是,几个基本的OO原则仍然从根本上被打破。可能最重要的一个是每个类形成一个隐含的依赖 每个 其他可见的类,它是 all 他们很强大。
我很想知道别人如何解决这个限制。
答案 1 :(得分:2)
嗯,你可以使用托管软件包,但正如Jeremy提到的那样,它并没有真正为你买单。当然,托管软件包对于开发在AppExchange上销售的公开列出的应用程序至关重要。但在内部它确实是一个组织范围的问题,因为一旦你创建了一个带有前缀的托管包,触及其他任何部分的所有内容都会被标记相同的名称空间前缀,包括所有自定义对象。更糟糕的是,您无法从托管软件包外部访问托管软件包中的代码(这实际上是他们的首要任务)。
虽然它不是最漂亮的解决方案,但我个人所做的是维护具有不同用途,应用程序和实用程序类的众多命名组织。当我需要在一个组织中使用实用程序类时,比如我正在构建一个发往AppExchange的新应用程序时,我将从相关的实用程序组织执行Eclipse导出/导入。这看起来确实很奇怪,但拥有一个orgs库是我设法跟踪所有事情并管理内部"的最佳方式。组织。但最终的结果实际上只是在任意代码存储之间进行了一次美化的复制粘贴操作。
答案 2 :(得分:1)
我在处理大型项目时遇到了类似的挑战,回过头来写这篇博客帖子,分享我现在关注的方法:http://www.tgerm.com/2011/11/apex-class-naming-convention-suggestion.html