Simplify Maintenance: Using standardized methods for dealing with common tasks, minimizing the complexity of servicing and updates.Aid Extensibility: Employ inheritance and polymorphism to create versatile and extensible code which will accommodate future changes.Factors not related to functionality, such as the experience on the software developer