training-center / code-review

Um projeto onde você pode enviar seu código fonte para outras pessoas te ajudarem a melhorar
MIT License
84 stars 4 forks source link

Avaliação projeto value-coins #10

Closed Pedro-Souza closed 6 years ago

Pedro-Souza commented 6 years ago

Gostaria de opiniões a respeito do que posso melhorar no meu código.

Repositório: https://github.com/Pedro-Souza/value-coins

Obrigado a quem puder ajudar.

robertoachar commented 6 years ago

Pedro, tudo bem?

Tenho algumas considerações em relação ao código e ao projeto em si.

Projeto

Código

// coins.ts

import axios from 'axios';
import { green, red } from "colors/safe";

Repare que você está utilizando aspas simples na primeira instrução e aspas duplas na segunda. É muito importante você optar por uma das opções para que seu código fiquei mais consistente. O linter pode te ajudar com isso, sinalizando quando a regra que você definiu não for respeitada. Aconselho conhecer o formatador de códigos Prettier, pode te ajudar com essa questão também. Para mais informações sobre o Prettier: https://prettier.io/.

Embora seja uma questão totalmente pessoal e seu código funcione, acredito que seja importante você avaliar a questão de estética no seu código. Por exemplo:

Trecho de código retirado do fonte bittrexApi.ts:

    getTicker(coin): void{
        let url: string = `${this.baseUrl}public/getmarketsummary?market=btc-${coin.toUpperCase()}`;
        axios.get(url).then(response => {
            console.log(red("[!] Bittrex  [+]"))
            if(response.data.message == "INVALID_MARKET")
                throw new Error(`Informe uma moeda válida`);
            if(response.data.success != true) 
                throw new Error(`Error on consulting Bittrex api url (${url}).\n' ${response.data.message}`);
            var result = response.data.result[0];
            console.log(green(`Valor => ${result.Last}`));
            console.log(green(`Menor valor => ${result.Low}`));
            console.log(green(`Volume => ${result.Volume}`));
        }).catch(err => {
            console.log(green(`${err}`));
        });
    }

Com uma pequena formatação, repare como o código fica um pouco mais legível. Novamente, é só uma questão pessoal, caso ache desnecessário, desconsidere.

    getTicker(coin): void{
        let url: string = `${this.baseUrl}public/getmarketsummary?market=btc-${coin.toUpperCase()}`;

        axios.get(url).then(response => {
            console.log(red("[!] Bittrex  [+]"))

            if(response.data.message == "INVALID_MARKET")
                throw new Error(`Informe uma moeda válida`);

            if(response.data.success != true)
                throw new Error(`Error on consulting Bittrex api url (${url}).\n' ${response.data.message}`);

            var result = response.data.result[0];
            console.log(green(`Valor => ${result.Last}`));
            console.log(green(`Menor valor => ${result.Low}`));
            console.log(green(`Volume => ${result.Volume}`));
        }).catch(err => {
            console.log(green(`${err}`));
        });
    }

Você está utilizando o pacote Axios para fazer suas requisições e ele tem suporte a Promises. Com isso, você tem uma grande oportunidade de conhecer Async/Await, uma das novas funcionalidades do ES2017. Caso queira conhecer mais sobre essa nova funcionalidade, escrevi um artigo no meu blog: https://showmethecode.com.br/async-await/.

Depois com mais calma, vou tentar encontrar mais alguns outros pontos de melhorias para você. Mas acho que já tem bastante coisa pra estudar.

Espero que tenha gostado.

Forte abraço.

Pedro-Souza commented 6 years ago

Obrigado @robertoachar, irei fazer todas as melhorias ainda hoje.