Enterprise Apex: separating service and domain layers
The trigger that finally pushed us to clean this up was three hundred lines long. It validated loan amounts, recalculated interest, adjusted the customer's credit utilization, fired a callout to the c