Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Método get de HttpService, não seria mais conveniente se fosse estático?

Boa tarde,

Na classe HttpService, temos o método get, responsável por isolar a complexidade de realizar requisições:

class HttpService {

    get(url) {

        return new Promise((resolve, reject) => {

            let xhr = new XMLHttpRequest();
            xhr.open('GET', url);
            xhr.onreadystatechange = () => {
                if(xhr.readyState == 4) {
                    if(xhr.status == 200) {
                        resolve(JSON.parse(xhr.responseText));
                    } else {
                        console.log(xhr.responseText);
                        reject(xhr.responseText);
                    }
                }
            }

            xhr.send();
        });
    }
}

Para utilizar o método fazemos algo como:

const service = new HttpService();

service.get('negociacoes/semana').then(negociacoes => ????);

Existem benefícios ao criar um novo objeto para poder utilizar o método get?

Na minha visão, a princípio seria bem mais conveniente deixar o método get estático, além de ter uma leve economia de memória (talvez nem faça muita diferença).

2 respostas
solução!

Bom dia!

Você programa orientado a objetos ou à classe? Uma pergunta simples mas que chega onde quero chegar.

Ensinei métodos estáticos para o aluno conhecer, mas quando você usa métodos estáticos não será capaz de trabalhar com implementações diferentes de um serviço.

Se você só terá uma implementação e tem essa certeza, não há problema usar métodos estáticos.

Flavio,

Ótima, pergunta! Porém, eu te pergunto, você programa orientado a objetos ou a funções?

Você mostrou como utilizar bem ambos os paradigmas, e que ambos podem nos ser úteis.

Então eu imagino que também possa me ser útil "programar orientado a classes". Claro que implementando onde fizesse sentido.

Eu não tenho experiência, mas neste exemplo específico me parece que sim, eu só teria esta implementação, HttpService seria apenas um namespace para as funções, aliás, eu imagino que eu poderia implementar outros métodos, como delete, put, etc... mas todos estáticos, tenho a impressão de que nesta classe eu não precisaria de estado no futuro. Mas eu não tenho experiência para poder ter certeza disso.

Respondendo a sua pergunta, mesmo que eu programasse orientado a classes eu estaria programando orientado a objetos, pois classes são funções, que por sua vez são objetos.

Obrigado pela atenção!