---
schema_version: "1"
id: 3c0ec15845718e66b1b7fbaad8ca1f6774cb3a0730319dcc72d91e7cb4ebc58c
title: 可压缩 - 可封装性
collection: architect
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/architect/next/zh-cn/well-architected-tools/guides/adaptable-packageability.md
canonical_url: https://staging.architect.salesforce.com/docs/architect/zh-cn/well-architected-tools/guide/adaptable-packageability.html
source_site: staging.architect.salesforce.com
content_type: documentation
content_hash: 8ac2fe3c5c8751baa39658d9a2bbda1c671955752e6876e5b1958996ea518e54
products:
  - 设计良好的工具
  - Architect Site Content Repo
---
# 可压缩 - 可封装性

### 依赖性管理模式

了解有关架构良好的可[适应](/docs/architect/zh-cn/well-architected/guide/adaptable-overview) → 可[组合](/docs/architect/zh-cn/well-architected/guide/composable) → 可[打包性](/docs/architect/zh-cn/well-architected/guide/composable#可打包性) → [依赖性管理](/docs/architect/zh-cn/well-architected/guide/composable#依赖性管理)的更多信息

| Where to look?<br>产品区域 \| 位置 | 好是什么样子？<br>模式                                                             |
| ---------------------------------- | ---------------------------------------------------------------------------------- |
| 平台 \| 设计标准                   | ✅ 存在引入或修改依赖性的标准                                                      |
| 平台 \| 设计标准                   | ✅ 存在声明依赖性的标准                                                            |
| 平台 \| 软件包                     | ✅ 软件包之间没有重复的元数据                                                      |
| 平台 \| 软件包                     | ✅ 对于软件包开发，所有早期开发工作都发生在临时组织中                              |
| 平台 \| 源控制                     | ✅ 开发人员可以从源代码控制中创建临时组织并成功部署软件包元数据                    |
| 平台 \| 源控制                     | ✅ 解锁软件包的软件包版本使用别名 (`LATEST`) 在`sfdx-project.json`清单中声明依赖性 |

### 松耦合模式

了解有关结构良好的可[适应](/docs/architect/zh-cn/well-architected/guide/adaptable-overview) → [可组合](/docs/architect/zh-cn/well-architected/guide/composable) → 可[包装性](/docs/architect/zh-cn/well-architected/guide/composable#可打包性) → [松耦合](/docs/architect/zh-cn/well-architected/guide/composable#松耦合)的更多信息

| Where to look?<br>产品区域 \| 位置 | 好是什么样子？<br>模式                                            |
| ---------------------------------- | ----------------------------------------------------------------- |
| 平台 \| Apex                       | ✅ 依赖于动态运行时信息的方法引用适当的自定义元数据类型           |
| 平台 \| Apex                       | ✅ 使用抽象或虚拟 Apex 类定义常见服务和模板代码                   |
| 平台 \| 设计标准                   | ✅（可选）所有批准的自定义设置用例都清楚地列出（如果有）          |
| 平台 \| 设计标准                   | ✅ 命名约定解决如何表示软件包单位                                 |
| 平台 \| 设计标准                   | ✅ 可以搜索并查找所有当前定义的软件包单元（和相关命名约定）的列表 |
| 平台 \| 设计标准                   | ✅ 存在提出软件包单元添加或更改的标准                             |
| 平台 \| 组织                       | ✅ 自定义元数据类型为代码和声明性自定义提供动态的运行时信息       |
| 平台 \| 组织                       | ✅ 不存在自定义对象，以便为代码或声明性自定义提供动态的运行时信息 |
| 平台 \| 组织                       | ✅ 不存在自定义设置或自定义设置很少，并且没有与封装功能相关的设置 |
| 平台 \| 软件包                     | ✅ 生产或 Sandbox 中未定义非受管软件包                            |
| 平台 \| 软件包                     | ✅ 依赖于组织的解锁软件包仅用于早期阶段或概念验证实验             |
| 平台 \| 源控制                     | ✅ `package.xml`文件仅出现在早期阶段或概念验证项目清单中          |

---

### 依赖性管理反模式

了解有关架构良好的可[适应](/docs/architect/zh-cn/well-architected/guide/adaptable-overview) → 可[组合](/docs/architect/zh-cn/well-architected/guide/composable) → 可[打包性](/docs/architect/zh-cn/well-architected/guide/composable#可打包性) → [依赖性管理](/docs/architect/zh-cn/well-architected/guide/composable#依赖性管理)的更多信息

| Where to look?<br>产品区域 \| 位置 | 要避免什么？<br>反模式                                                        |
| ---------------------------------- | ----------------------------------------------------------------------------- |
| 平台 \| 设计标准                   | 设计标准不存在或未涉及如何声明依赖性                                          |
| 平台 \| 软件包                     | 通过在不同软件包中复制元数据来规避依赖性                                      |
| 平台 \| 软件包                     | 早期软件包开发在 Developer Sandbox 中发生，早期软件包开发在临时组织中不会发生 |
| 平台 \| 源控制                     | 开发人员无法使用源控制成功使用临时组织                                        |
| 平台 \| 源控制                     | 解锁软件包的软件包版本在`sfdx-project.json`清单中明确声明（无`LATEST`别名）   |

### 松耦合反模式

了解有关结构良好的可[适应](/docs/architect/zh-cn/well-architected/guide/adaptable-overview) → [可组合](/docs/architect/zh-cn/well-architected/guide/composable) → 可[包装性](/docs/architect/zh-cn/well-architected/guide/composable#可打包性) → [松耦合](/docs/architect/zh-cn/well-architected/guide/composable#松耦合)的更多信息

| Where to look?<br>产品区域 \| 位置 | 要避免什么？<br>反模式                                                                                           |
| ---------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| 平台 \| Apex                       | ⚏ 常见服务和模板代码不易与其他类区分                                                                             |
| 平台 \| Apex                       | 方法没有使用一致的方法来访问动态、运行时信息，或者方法没有查询运行时行为信息的自定义对象，或者代码引用自定义设置 |
| 平台 \| Apex                       | 跨类和方法的内部引用难以遵循，并且在整个代码库中不一致                                                           |
| 平台 \| 设计标准                   | 设计标准不存在或未处理软件包单元和用例                                                                           |
| 平台 \| 组织                       | 使用自定义设置                                                                                                   |
| 平台 \| 组织                       | 自定义对象的存在是为了提供代码或声明性自定义的动态运行时信息                                                     |
| 平台 \| 组织                       | 自定义元数据类型未用于（或未一致使用）为代码和声明性自定义提供动态运行时信息                                     |
| 平台 \| 软件包                     | 非受管软件包在生产或 Sandbox 中定义                                                                              |
| 平台 \| 软件包                     | ⚠ 所有软件包都是依赖于组织的解锁软件包                                                                           |
| 平台 \| 源控制                     | `package.xml`文件用于控制元数据部署                                                                              |

---
