Principle: Keep Business Logic Out of Your Trigger

DEX450 - Module 13: Strategies for Designing Efficient Apex Solutions

📄 第 351 页 🎬 视频课程

课程章节介绍

同学们,今天我们来聊聊Salesforce开发中的一个重要原则:让商业逻辑远离触发器。这个原则听起来可能有点抽象,但别担心,我会用简单的例子来解释。 首先,想象一下交通警察。他们的工作是确保交通顺畅,而不是去修路或者设计交通信号灯。同样,在Salesforce中,触发器的主要职责是响应数据的变化,比如当一条记录被插入、更新或删除时。触发器的任务就是“指挥交通”,而不是去处理复杂的商业逻辑。 为什么这么说呢?因为如果我们在触发器里塞满了商业逻辑,就像让交通警察去修路一样,事情会变得非常混乱。触发器会变得难以维护和调试,尤其是当你有多个触发器时,问题会变得更加复杂。 所以,很多中小企业都建议,尽量把商业逻辑从触发器中剥离出来。你可以把商业逻辑放在其他地方,比如Apex类或者服务层。这样,触发器就只负责响应数据变化,而商业逻辑则由专门的类来处理。这样做的好处是,代码更清晰,更容易维护,也更容易调试。 举个例子,假设你有一个触发器,在插入记录时调用一个方法`grantDirectorSharingAccess`。如果触发器是在插入操作时触发的,那么`Trigger.oldMap`会是空的,因为没有旧的记录。如果你不小心,可能会把空值传递给这个方法,导致错误。所以,我们需要确保在调用方法之前,检查一下`Trigger.oldMap`是否为空。 总结一下,让商业逻辑远离触发器,就像让交通警察专注于指挥交通一样,可以让你的代码更清晰、更易于维护。你可以参考一些高级的触发器模式,比如我们刚才提到的那些链接,或者阅读Dan Appleman的《高级Apex编程》,来进一步了解如何更好地组织你的代码。 好了,今天的课程就到这里,希望你们能理解这个原则,并在实际开发中应用它。如果有任何问题,随时问我!