A programação orientada a objetos possui vários princípios de design já estabelecidos, assim como os princípios SOLID. Contudo, na programação funcional muitos desenvolvedores não sabem como utilizar estes princípios, foi o que Richard Warburton recentemente destacou em uma apresentação.
Sobre o mesmo assunto, Mark Seemann escreveu em seu blog que ao levar os princípios SOLID ao extremo, chega-se a algo que torna a programação funcional mais atrativa.
Richard Warburton, que também é membro do Comitê da JCP em Londres, cita em sua apresentação como os princípios SOLID são exemplos bem estabelecidos de design da orientação a objetos identificados por Robert C. Martin nos anos 2000, e analisa cada um dos cinco princípios tentando identificar sua equivalência no paradigma funcional.
Richard aponta que apesar de muitos desenvolvedores não saberem aplicar suas habilidades de design existentes no modelo funcional, a programação funcional pode frequentemente auxiliar na implementação de princípios SOLID. Além disso a mentalidade funcional pode ajudar a atingir um importante aspecto da orientação a objetos: o encapsulamento.
Por fim, Richard conclui que todos os princípios SOLID possuem um equivalente funcional. Existem padrões de design que não precisam ser abandonados; ao contrário, podem ser aperfeiçoados tornando-os mais simples e claros.
Mark Seemann, arquiteto de software e consultor independente, com sua experiência descobriu que os princípios SOLID podem levar a um estilo de design que torna a programação funcional mais atrativa.
Quando se esta aplicando dois dos princípios SOLID, Single Responsibility Principal (SRP) e Interface Segregation Principle (ISP), acaba-se com uma base de código de interfaces com alta-granularidade e classes com somente um método.
Mark conclui que aplicando repetidamente estes dois princípios, leva-se a pequenas classes de apenas um método e que neste ponto pode ser hora de mudar para uma linguagem de programação funcional como o F#.