Benefits Low cognitive load => software easy to understand Easy debugging => high reliability Responsibility boundaries Software reuse Principles High cohesion Low coupling Single responsibility Context Class Library Namespace References https://memberservices.informit.com/my_account/webedition/9780135425664/html/movefunction.html http://aosd.net/importance-of-modularity-in-programming/