Actions, Policies, and the Art of Obvious Code
The article discusses the 'Action' pattern, a single-purpose class with one public method, as a solution to the problem of 'fat controllers' in web applications.
Why it matters
The Action pattern helps improve the maintainability and testability of web applications by separating concerns and reducing the complexity of controllers.
Key Points
- 1Fat controllers have multiple responsibilities, making the code difficult to understand and maintain
- 2The Action pattern introduces a single-purpose class with one public 'execute()' method
- 3Actions handle validation, creation, side effects, and other concerns separately from the controller
Details
The article starts by describing a typical 'store()' method in a controller that has eight different responsibilities, from validation to sending notifications. This makes the code difficult to understand and maintain. The solution proposed is the 'Action' pattern, where a single-purpose class with one public 'execute()' method is used to handle a specific operation. The article provides an example of a 'CreateOrderAction' class that encapsulates the logic for creating an order, including validation, document handling, and side effects like sending notifications and logging analytics. This separation of concerns makes the code more modular and easier to reason about.
No comments yet
Be the first to comment