Sobes.tech
Senior

Forneça exemplos de violações dos princípios 'SOLID' nas bibliotecas padrão.

sobes.tech IA

Resposta da IA

Os princípios SOLID na maioria das bibliotecas padrão da Apple são seguidos a um alto nível. No entanto, podem ser encontrados exemplos onde sua aplicação não é tão rigorosa ou possui exceções:

  • Princípio da responsabilidade única (SRP): Algumas classes em UIKit ou Foundation realizam várias tarefas não relacionadas. Por exemplo, UIViewController pode ser responsável não apenas por gerenciar as visualizações, mas também pelo processamento de dados, navegação, etc.
  • Princípio de aberto/fechado (OCP): Expandir a funcionalidade de algumas classes padrão às vezes requer modificar a própria classe, em vez de criar uma subclasse ou usar um protocolo. Um exemplo pode ser adicionar nova funcionalidade ao UITableViewDataSource existente sem poder substituir facilmente parte de seu comportamento.
  • Princípio de substituição de Liskov (LSP): Em algumas hierarquias de classes, por exemplo, no tratamento de gestos (UIGestureRecognizer e suas subclasses), nem sempre é possível substituir a classe base por sua subclasse sem alterar o comportamento do aplicativo.
  • Princípio de segregação de interfaces (ISP): Alguns protocolos nas bibliotecas padrão podem conter muitos métodos, nem todos necessários para todas as classes que os implementam. Um exemplo pode ser o protocolo UITableViewDelegate, que possui muitos métodos opcionais.
  • Princípio de inversão de dependências (DIP): Embora a injeção de dependências seja amplamente utilizada no desenvolvimento moderno para iOS, em algumas partes antigas dos frameworks, as dependências podem estar fortemente acopladas, dificultando testes e substituição de componentes.

É importante notar que essas "violação" muitas vezes representam compromissos, condicionados pela história do desenvolvimento, desempenho ou para simplificar o uso da API em cenários típicos. Na maioria dos casos, um projeto inteligente de aplicativos sobre as bibliotecas padrão permite seguir os princípios SOLID.