Closed Pedro-Souza closed 6 years ago
Pedro, tudo bem?
Tenho algumas considerações em relação ao código e ao projeto em si.
Dependências: procure utilizar versões exatas nas suas dependências. Isso pode evitar problemas futuros, onde uma dependência seja atualizada com alguma falha. Você pode definir essa configuração de 02 maneiras: npm i --save-exact <package-name>
ou criar um arquivo .npmrc
na raíz do seu projeto com o conteúdo save-exact = true
.
Babel: o pacote babel-preset-es2015
: foi descontinuado. Você pode utilizar o babel-preset-env
no lugar dele. Para mais informações: https://babeljs.io/docs/plugins/preset-env/.
Linter: é muito importante utilizar um linter
no seu projeto. O papel de um linter
é analisar estaticamente seu código em busca de erros de sintaxe, por exemplo. O mais indicado para TypeScript é o TSLint. Mais informações: https://palantir.github.io/tslint/.
README: coloque a seção autor e se possível um link para seu Twitter, para o caso de alguém querer entrar em contato com você. É importante adicionar um arquivo de licença do seu código. Embora no arquivo package.json
esteja especificado ISC
, acredito que esteja especificado por ser a opção padrão. A opção mais comum é MIT
. Mais informações: https://choosealicense.com/.
// 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.
Obrigado @robertoachar, irei fazer todas as melhorias ainda hoje.
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.