10. Pros
1. Make your codes more readable to a human.
(model validation, routes, rspec, view helper)
Cons
1. High learning curve for beginners.
(Easy to misunderstanding)
11. 2. No REAL property
class/instance variables
and
method instead.
22. Pros
1. Split logics to different level and make your business logic clean.
2. Increase productive.
3. Follow DRY code principle like there is no limitation.
23. Cons
1. Hard to maintain (but it can be solve)
2. Hard to name variables and methods for abstraction behavior.
3. Hard to understand abstraction behavior codes from time to time.