A. Unify all three triggers in a single trigger on the Expense__c object that includes all events:
Salesforce best practices recommend having only one trigger per object to avoid redundancy and conflicts.
By combining all the events (before delete, before insert, and before update) into a single trigger, the developer can manage the logic in an organized and maintainable manner.
This also simplifies debugging and ensures that the trigger logic executes in a predictable order.
C. Create helper classes to execute the appropriate logic when a record is saved:
Using helper classes allows for a clean separation of concerns. The trigger becomes a dispatcher that delegates logic to dedicated classes.
For example, you can create methods like applyDefaultsToExpense(), validateExpenseUpdate(), and deleteExpense() in a helper class and invoke them from the trigger.
This improves reusability, readability, and testability of the code.
Why not the other options?
B. Unify the before insert and before update triggers and use Flow for the delete action:
While Flow is a powerful tool, it is not ideal for deleting records or replacing Apex trigger functionality, especially when triggers already exist for other events.
D. Maintain all three triggers on the Expense__c object but move the Apex logic out of the trigger definition:
Maintaining multiple triggers on the same object can lead to conflicts and execution order issues, even if the logic is moved to helper classes.
Submit