Eu achei os princípios do SOLID bastante úteis quando pensamos em design orientado a objetos.
Existe um conjunto semelhante / equivalente de princípios agnósticos de linguagem adaptados para programação funcional?
Eu achei os princípios do SOLID bastante úteis quando pensamos em design orientado a objetos.
Existe um conjunto semelhante / equivalente de princípios agnósticos de linguagem adaptados para programação funcional?
Respostas:
É um pouco difícil encontrar equivalentes, mas posso tentar:
O SOLID também é uma boa ideia para os reinos funcionais / imperativos.
SRP - 'Apenas faça uma coisa' foi tirado da programação imperativa em primeiro lugar. Ter pequenas funções focadas é bom.
OCP - Permitir que você altere comportamentos sem modificar o código é bom. A programação funcional usa funções de ordem superior mais do que herança, mas o princípio é válido.
LSP - O cumprimento de algum contrato de interface é tão bom em programação funcional quanto em orientação a objetos. Se uma função de classificação usar um comparador, você esperaria que o '0 seja igual, menor que o resultado negativo, maior que o comportamento positivo'.
ISP - A maioria das linguagens funcionais ainda possui estruturas. A especificação do menor conjunto de dados exigido por uma função ainda é uma boa prática. Exigir a interface menos específica para os dados (por que usar Listas de entradas quando as Enumerações de T funcionam tão bem?) Ainda é uma boa prática.
DIP - especificar parâmetros para uma função (ou uma função de ordem superior para recuperá-los) em vez de codificar a função para obter algum valor é tão bom na programação funcional quanto na orientação a objetos.
E mesmo ao fazer programação orientada a objetos, muitos desses princípios também se aplicam ao design de métodos nos objetos.