Executando verificação de segurança...
1

Como aplicar programação funcional? (é uma pergunta mesmo, rs) - Javascript

Tenho estudado um pouco sobre paradigmas, mas estou tendo dificuldade em enteder sobre o paradigma da programação funcional (vou chamar de PF aqui)
Tenho usado (ou tentando usar) programação orientação a objetos (POO/OOP)

O problema é que não entendo muito bem o que efetivamente muda da POO para a PF.

Digamos que tenho um objeto chamado USER, que tem possui as funções : fLogin, fRegister e fLogout;

Dentro de cada função do objeto USER, eu possuo um sistema de funções para que a função final seja executada.

Suponhamos a função fLogin:

    const user = {
        fLogin(usernameInput:string passwordInput:string) {

            const loginInputsValidationResult:boolean = fInputLoginValidator(usernameInput, passwordInput);
               
            if(loginInputsValidationResult) {
                return validationUserLoginOnDatabase(usernameInput, passwordInput);
      
            }
            else{
                return false
            }
        }
        
        fLogout(){
        ...
        }
        
        fRegister() {
        ...
        }
    }

Desta forma, quando eu quiser fazer um login, eu faço o seguinte:

    {
        user.fLogin(userName, password)
    }

E outro detalhe, ao usar programação funcional, seria Ok ter funções encapsuladas em funções, ou teria que usar as funções de modo "procedural"?

No modelo acima, eu chamo a função fLogin, que possui internamente a função de validação dos dados (pra ver se o campo não é NULL) e a função de validação no banco de dados (pra ver se os dados estão como no Database mesmo).

Em programação funcional eu poderia manter este tipo de encapsulamento?

Como faria esse login acima com programação funcional?

ps: as

1
1

Acabei de ver seu artigo, muito obrigado!

O ponto é que tenho visto bastante teoria, tanto em vídeos quanto em artigos, porém conteúdo prática é raro...

Vi que no teu artigo tem sobre funções puras, impuras, funções como parâmetros, etc.

Um ponto me respondeu: é possível encapsular funções dentro de funções, correto? porque vi que dentro de uma das funções, o RETURN é uma outra função.

Mas ainda continuo com uma dúvida: como transformo esse sistema de login em funcional, por exemplo?

Porque no caso ali, se ignorar a parte do objeto (USER), todo o resto já não é funcional?

3

Um ponto me respondeu: é possível encapsular funções dentro de funções, correto? porque vi que dentro de uma das funções, o RETURN é uma outra função.

Sim, é chamado de closures, funções podem tanto receber como parametros quanto retornar outras funções.

Mas ainda continuo com uma dúvida: como transformo esse sistema de login em funcional, por exemplo?

Nesse caso sim, já é funcional. Acontece que a aplicação do paradigma funcional é mais sutil que a aplicação do OOP que exige muito setup. No caso de programação funcional o que vc tem que se preocupar é com evitar efeitos colaterais, sempre optar por funções puras, trabalhar na imutabilidade dos dados e etc.

Eu recomendo vc pegar uma linguagem puramente funcional pra entender como é o paradigma na prática, minha recomendação é a elixir, mas também tem outras como clojure, haskell, lisp e outras.

1

Entendi...
Bom saber.
Muito obrigado pelos esclarecimentos.

Vou tentar encontrar algum reposítio com algum código relativamente simples, com Programação Funciontal, pra analisar e compreende rmelhor ainda.

E vou pesquisar sobre uma linguagem mais funcional pra estudar.
Vlw

1

Cara, isso ai, faz um programinha simples pô. Eu linkei a um material da elixir school (Material oficial da linguagem) lá ta tudo bem organizado. Eu começaria por lá (caso vá seguir com o elixir), vai seguindo o guia e depois quando tiver um entendimento faz algo simples.