代码质量模式
此合并模式页面涵盖了资源优化的代码质量和可维护性实践。它包括关于标准与自定义代码决策、技术债务管理、设计标准、文档实践和治理的指导。这些模式有助于保持开发速度,降低缺陷率,并实现解决方案的长期可持续性。
模式
| 何处查看 | 好样的 |
|---|---|
| 大规模绩效 | ✅ 测试验证声明性解决方案是否满足预计数据量的性能要求。在完全复制 Sandbox 中使用现实数据进行负载测试,这证实了生产部署前的可扩展性。 |
| 可维护性分析 | TCO 分析比较了声明性方法和自定义方法的长期维护负担,包括升级工作、测试要求和未来团队的技能要求。 |
| 混合方法架构 | ✅ 解决方案酌情将声明性和程序性方法结合起来。在 Apex 处理复杂计算时,流会编排高级逻辑。Apex 处理批量操作时,公式字段计算简单派生。 |
| AppExchange 评估 | ✅ 在构建自定义代码之前,请评估提供类似功能的现有 AppExchange 软件包。记录评估结果,包括审查的软件包、功能差距和 TCO 比较。 |
模式
| 何处查看 | 好样的 |
|---|---|
| 待办事项可见性 | ✅ 跟踪待办事项中的技术债务项目,带有明确的标签,上下文解释了代码需要改进的原因,未处理对业务的影响,以及估计的补救措施。无形债务无法优先处理或管理。 |
| 增量改进 | ✅ 在功能开发期间应用的童子军规则:保留比发现更好的代码。团队在相关功能工作期间逐步解决债务,而不是需要大型专用重构项目。代码审查会验证增量改进。 |
| 预防重于补救 | ✅ CI/CD 中的质量门在代码到达生产之前强制执行标准。集成到拉取请求验证中的代码扫描仪、ApexGuru 和复杂性度量。阻止问题会阻止合并,直到解决。 |
反模式
| 何处查看 | 什么不好的样子 |
|---|---|
| 待办事项管理 | ⚏ 口头承认技术债务,但从未跟踪待办事项。没有债务累积的可见性。债务补救总是被推迟,以有利于功能工作。速度逐渐下降,团队无法解释原因。 |
| 质量门旁路 | 在计划压力下,CI/CD 质量门经常被绕过,打算稍后修复。“以后”永远不会发生。标记为已知问题并忽略的代码扫描仪故障。提高复杂性阈值以适应糟糕的实施。 |
| 没有补救能力 | ⚠ 将 100% 的冲刺能力分配给特色工作,将零能力用于技术性债务补救。债务无限累积。每 18-24 个月需要实施一次重大重组项目,消耗整个季度。 |
| 配置债务 | 自定义元数据类型和自定义设置累积,无需清理。未使用的配置会无限期保留。生产有 50 个元数据记录,但实际使用的只有 12 个。没有解释配置值目的的文档。 |
模式
| 何处查看 | 好样的 |
|---|---|
| 触发器架构 | ✅ 触发器处理程序模式一致应用:精简触发器委派给处理程序类,处理程序类按触发器上下文组织逻辑(插入前、更新后),明确的方法名称显示目的。触发器文件本身没有业务逻辑。 |
| 服务层实施 | ✅ 封装在服务类中的业务逻辑,独立于控制器、触发器和批处理入口点。跨多个入口点可重复使用的服务类,没有重复。清除命名约定(AccountService、OrderProcessor)。 |
| 选择器模式 | ✅ SOQL 查询集中在每个对象的选择器类中(AccountSelector、OpportunitySelector)。选择器方法返回一致的字段集。LDV 优化更改应用一次,影响所有查询。 |
| 存储库模式 | ✅ 在接口后面抽象的数据访问,允许使用模拟数据源进行测试。存储库实施封装了查询构建、缓存和优化策略。业务逻辑取决于存储库界面,而不是具体实施。 |
| 组件设计标准 | Lightning Web 组件遵循单一责任原则,为配置公开属性,为父级通信发布事件,设计用于组成和重用。使用示例记录的组件库。 |
| 代码组织 | ✅ 逻辑软件包结构组相关类。明确区分域逻辑、数据访问、API 端点和集成适配器。软件包依赖性朝一个方向流动。 |
反模式
| 何处查看 | 什么不好的样子 |
|---|---|
| 触发器 | 所有业务逻辑直接嵌入到带有深度嵌套条件的触发器文件中,没有关注分离,没有处理器类。300 多个行触发器文件混合了验证、业务逻辑和集成调用。无法有效测试。 |
| 循环中的查询 | 在迭代循环中执行的 SOQL 查询。适用于小数据量,但在处理批量操作时违反 100 SOQL 查询限制。仅在触发器触发生产中的批量数据加载时发现。 |
| 循环中的 DML | 在迭代循环中执行的 DML 语句(插入、更新、删除)。使用批量操作违反 150 DML 语句限制。每个记录都在单独的数据库事务中处理,而不是高效的批量处理。 |
模式
| 何处查看 | 好样的 |
|---|---|
| 架构决策记录 | ✅ 版本控制中存储的 ADR 记录了重要的架构决策。ADR 捕获上下文(业务驱动因素、技术约束)、决策(选择的内容)、考虑的替代方案(拒绝的原因)和后果(权衡、重新访问的条件)。 |