Sobes.tech
Senior

Provide examples of violations of 'SOLID' principles in standard libraries.

sobes.tech AI

Answer from AI

The SOLID principles are generally well adhered to in most standard Apple libraries. However, there are examples where their application is less strict or has exceptions:

  • Single Responsibility Principle (SRP): Some classes in UIKit or Foundation perform multiple unrelated tasks. For example, UIViewController may be responsible not only for managing views but also for data handling, navigation, etc.
  • Open/Closed Principle (OCP): Extending the functionality of some standard classes sometimes requires modifying the class itself rather than creating a subclass or using a protocol. An example could be adding new functionality to an existing UITableViewDataSource without easily replacing part of its behavior.
  • Liskov Substitution Principle (LSP): In some class hierarchies, such as gesture handling (UIGestureRecognizer and its subclasses), it is not always possible to replace the base class with its subclass without changing the application's behavior.
  • Interface Segregation Principle (ISP): Some protocols in standard libraries may contain too many methods, not all of which are required by all implementing classes. An example could be the UITableViewDelegate protocol, which has many optional methods.
  • Dependency Inversion Principle (DIP): Although dependency injection is actively used in modern iOS development, in some older parts of frameworks, dependencies may be tightly coupled, making testing and component replacement difficult.

It is important to note that these "violations" are often compromises driven by development history, performance considerations, or to simplify API usage in typical scenarios. In most cases, well-designed application architecture on top of standard libraries allows adherence to SOLID principles.

Provide examples of violations of 'SOLID' principles… - sobes.tech