Jump to content

leandro silva

Pessoal da TecnoSpeed
  • Contagem de Conteúdo

    6
  • Ingressou

  • Última visita

  • Dias Ganhos

    2

leandro silva ganhou o dia em Janeiro 4

leandro silva teve o conteúdo mais curtido!

Informações Pessoais

  • Cidade
    Maringá
  • Estado
    Paraná (PR)

Clientes & Parceiros

  • Você é um cliente TecnoSpeed?
    Não

Visitantes Recentes do Perfil

O bloco de visitantes recentes está desativado e não está sendo mostrado a outros usuários.

Conquistas de leandro silva

  • Ótima Reputação Raro

Emblemas Recentes

16

Reputação na Comunidade

  1. Um código mal escrito pode se transformar em um pesadelo para os desenvolvedores que precisam mantê-lo e entender sua lógica. É neste contexto que o livro “Clean Code: A Handbook of Agile Software Craftsmanship” de Robert Cecil Martin, amplamente conhecido como Uncle Bob, se destaca como uma obra fundamental para qualquer programador que deseje aprimorar suas habilidades de codificação. Uncle Bob argumenta que o código limpo não é apenas uma questão de preferência pessoal, na verdade, é uma necessidade para qualquer projeto de software que pretenda ter sucesso a longo prazo. Vamos explorar algumas das principais ideias apresentadas no livro, através de exemplos concretos, para entender como elas podem ser aplicadas na prática. 1. Significado Preciso através de Nomenclatura Clara: Em um código limpo, os nomes das variáveis, funções e classes devem ser significativos e refletir com precisão o propósito que representam. Por exemplo, considere o seguinte trecho de código: function calcular_area ® { a = 3.14 * r * r return a }; Neste caso, as variáveis R e A não fornecem informações claras sobre seu significado. Em vez disso, podemos melhorar o código utilizando nomes mais descritivos: function calcular_area_do_circulo(raio) { area = 3.14 * raio * raio return area }; Agora, é evidente que a função "calcular_area_do_circulo” recebe um raio como parâmetro e retorna a área correspondente. 2. Funções devem fazer uma coisa: O princípio da responsabilidade única afirma que cada função deve realizar apenas uma tarefa específica. Considere o seguinte exemplo: class Funcionario_cozinheiro { fazerPrato(prato) { //código para a realização de prato } valorDoPrato(prato) { // Código para o calculo do valor do prato } recolherPratos() { // Código para recolher os pratos } } Neste caso, a classe “Funcionario_cozinheiro” está realizando três tarefas distintas: fazendo o prato,calculando o preço do prato e recolhendo os pratos. Para tornar o código mais limpo e modular, podemos dividir essas tarefas em funções separadas: class Cozinheiro { fazerPrato(prato) { // Código para a realização de pratos } } class Caixa { valorDoPrato(prato) { // Código paara o calculo do valor do prato } } class Garcon { recolherPratos() { // Código para recolher os pratos } } Dessa forma, cada função tem uma responsabilidade única e pode ser modificada independentemente das outras. 3. Evite Comentários Óbvios: Comentários no código podem ser úteis, mas muitas vezes são usados como um subterfúgio para o código confuso. Em vez de adicionar comentários óbvios que explicam o que o código está fazendo, é melhor escrever o código de forma clara e autoexplicativa. Considere o seguinte exemplo: // Verifica se o número é positivo ou negativo if (numero > 0) { // Executa a lógica para números positivos // … } Neste caso, o comentário é redundante, pois a condição número > 0 já indica claramente que estamos verificando se o número é positivo. O código pode ser simplificado da seguinte forma: if(numero > 0) { // Executa a lógica para números positivos // … } 4. Formate o código de Maneira Consistente: A formatação consistente do código é crucial para a legibilidade. Uncle Bob sugere adotar um estilo de formatação claro e consistente em todo o projeto. Por exemplo, decidir se as chaves das estruturas de controle (if, for, while) devem estar na mesma linha ou na próxima linha. Independentemente da escolha, é importante manter a consistência em todo o código. Aqui está um exemplo: // Formato inconsistente function primeiroExemplo() { if(condicao) { // código } else { // código } } // Formato consistente function segundoExemplo() { if(condicao) { // código } else { // código } } No primeiroExemplo, as chaves estão em linhas diferentes para if e else, tornando o código visualmente desigual. Já no segundoExemplo, o código segue um estilo consistente, facilitando a leitura e compreensão do código. Conclusão: O livro “Clean Code” é uma leitura essencial para todos os desenvolvedores que desejam elevar a qualidade de seus códigos. Ao adotar princípios como nomenclatura clara, funções com responsabilidade única, evitar comentários óbvios e formatação consistente, os programadores podem criar softwares mais robustos, fáceis de entender e de manter.
  2. Fala Dev, beleza! Estarei explicando um pouco de como funciona a ferramenta JEST, como instalar, configurar e como utilizar o mesmo em alguns cenários. Primeiramente para darmos início aos testes, é preciso instalar o pacote informando o comando: NPM INSTALL JEST -D Como o intuito dessa ferramenta é a realização de testes, sua instalação é realizada como uma DevDependencies. O primeiro passo que podemos estar realizando é a configuração de um script para rodarmos sempre que precisarmos realizar os testes. Dentro de seu arquivo package.json, informe o seguinte comando: "test": "node --experimental-vm-modules node_modules/jest/bin/jest.js" - Para iniciarmos o desenvolvimento, crie um arquivo com essa extensão por exemplo: simulandorotas.test.js Como os testes que simularemos serão rotas de uma API, podemos estar criando Hooks para controlarmos a inicialização e fechamento do servidor, com: Nessa implementação o beforeEach seria a inicialização do servidor para a realização dos testes, e o afterEach é para desligarmos/fecharmos o servidor após os testes. Realizando a simulação de uma Rota do tipo GET: - O describe é utilizado para dividir e organizar o seu código em blocos de testes. (É incluído uma descrição sobre o que se trata o bloco) - O it são os seus testes individuais que deseja realizar. (É incluído uma descrição informando o que o teste está tentando realizar) - O expect são informações que são esperadas que sejam recebidas, são elas que irão validar os nossos testes. - Nesse caso estamos realizando uma consulta em nosso banco de dados através da rota '/editoras' trazendo todos os dados, e verificando se o primeiro elemento retornado no campo e-mail é igual a 'e@e.com' Realizando o teste com: npm run test Verificamos que o teste passou corretamente. ✅ Validando na imagem anterior, podemos verificar que existem alguns skipped, esse são testes que estamos pulando, como realizar o mesmo? Para pular um teste é preciso incluir a palavra skip na frente de seu teste, que como vimos, é o it, ficando desta forma em código: O último teste apresentado aqui será o da rota PUT, onde será mostrado como realizar vários testes de alteração, validando em cada teste um campo: - Está sendo utilizado um laço de repetição para os testes, incluindo a palavra reservada each, onde é passado um array com os testes dos campos que queremos realizar. - Cada teste é caracterizado como um objeto, então nesse caso serão realizados 3 testes para a rota PUT, sendo esperado que após as alterações, seja retornado um status 204. Realizando o teste novamente, podemos ver que ele passou nos 3 testes: Para que apareça essa tabela de testes, é possível alterar em seu package.json no script de test, incluindo a flag --verbose Caso queira consultar mais sobre a ferramenta JEST, é possível acessar o link de sua Documentação. Qualquer dúvida estou a disposição!
  3. Fala Dev, tudo certo? Venho aqui explicar para vocês um pouco sobre o CORS, mas o que seria essa palavra CORS? Bom, o CORS é uma biblioteca do NodeJS, onde ele simplesmente define quais endereços web externos podem acessar uma aplicação HTTP que está iniciada através de algum script, como por exemplo: XMLHttpRequest e Fetch API. Deixando um pouco mais simplificado a teoria, vamos realizar essa explicação através de exemplos. Suponhamos que você esteja criando uma aplicação back-end na porta 45678 que precisa se comunicar com o seu front-end que está na porta 5500. Utilizando o Fetch API por exemplo sem a utilização do CORS, será retornado um erro. Mas qual seria este erro? Leandro, eu não consigo compreender essa mensagem de erro, o que eu posso estar fazendo? Vem comigo, que estarei explicando detalhadamente a causa desta rejeição. A mensagem está comentando o seguinte: Desenvolvedor, estou tentando acessar essa rota que você me informou ‘http://localhost:45678/’ através da rota ‘http://127.0.0.1:5500/’ (o endpoint 127.0.0.1 é o mesmo que localhost), mas essa rota foi bloqueada pela política do CORS. Eu não consigo acessar o que foi solicitado. Verificamos que na requisição GET foi localizado a rota, mas não há permissão de acesso, devido a isso, temos a terceira rejeição que deu erro na chamada do Fetch devido a falta de permissão. Um outro caso que podemos identificar nas chamadas da API, é a informação da rota incorreta. A rota estando incorreta, será retornado a seguinte rejeição, informando que essa rota não foi localizada: Para corrigir essas rejeição, realizamos a instalação da biblioteca do CORS, realizando o comando no terminal de: npm i cors ou npm install cors Tendo o mesmo instalado, é preciso buscar ele e utilizar juntamente ao express: Mas é preciso de uma atenção nessa parte, caso informe somente " * ", o servidor estará disponibilizado para que todos os servidores tenham acesso ao mesmo. Para que seja realizado a liberação para um único endpoint, você pode estar estabelecendo quais URLs terão permissão de acesso. Realizando a liberação, os erros serão removidos e será retornado a resposta da requisição: Estarei disponibilizando também a documentação do CORS caso queiram visualizar alguns outros exemplos de configuração do CORS: Link. Qualquer dúvida estou a disposição.
  4. Eaii Dev, beleza? Durante meu início nos estudos em programação, eu sempre senti uma dificuldade em relação a como criar um projeto utilizando algum banco de dados não relacional, e foi a partir desta dor que eu busquei aprender a como utilizar o MongoDB, um banco de dados não relacional (orientado a documentos), além de ser um dos mais utilizados no mercado. Então, bora aprender a como integrar esse banco de dados maravilhoso em seu projeto: Primeiramente é preciso que você realize o cadastro de uma conta através deste site. Neste registro você precisará inserir os dados padrões que um formulário solicita, como: primeiro nome, último nome, e-mail e senha. - Ao se conectar em sua conta, é preciso que você crie um novo projeto. Será aberta uma página onde você dará um nome ao seu novo projeto, posteriormente clique em Next. Ao clicar no botão você passará para a aba seguinte, onde você não precisará alterar nenhum ponto, clicando assim somente em Create Project. Com seu Projeto criado, é a hora de criarmos o nosso banco de dados. Clicando em Build a Database, será disponibilizado três tipos de bancos, mas o que iremos utilizar é o modelo Free. Passando para a página seguinte, você pode simplesmente clicar em Create Cluster. Ao criar o banco de dados, é preciso que você crie um usuário e senha para acesso a aquele banco: E descendo um pouco mais, você precisa informar o seu IP. Esse IP é uma lista informando quem terá acesso para se conectar aos clusters do seu projeto. Certo, ao realizar a criação do banco, agora sim estamos prontos para realizar a conexão no mesmo, clicando em Connect será lhe apresentado algumas formas de se conectar, a que utilizaremos será a de API. Será nos disponibilizado uma URL de conexão, copie o mesmo, pois será utilizado no projeto. Partindo para nosso projeto, antes de realizarmos a configuração para incluirmos o banco de dados MongoDB, é necessário que vocês contenham a pasta node_modules e o package.json previamente configurados. Para realizar a configuração utilizamos o próprio terminal do Visual Studio Code, passando os seguintes comandos: Configuração package.json - npm init - y Configuração das dependências dentro da pasta node_modules - npm install mongoose Após essas configurações será possível realizar a configuração do banco no projeto, segue o fluxo: 1• Realizamos a importação da dependência mongoose, onde instalamos dentro da pasta node_modules. 2• Por questão de organização e melhor visibilidade dos códigos do projeto, é criado duas constantes com o usuário e senha que criamos para acesso ao banco de dados anteriormente. 3• Utilizando a constante onde importamos o projeto, realizamos a conexão do banco com a URL copiada anteriormente, concatenando o usuário e senha na URL. Posteriormente é criado uma promessa de conexão, onde caso a resposta seja positiva, é apresentado o texto Conectamos ao MongoDB!, e em casos de falha de conexão será nos retornado o erro. A partir daí é só subir o servidor e verificar se o banco de dados se conectou corretamente. Em caso de erro será apresentado esta mensagem, informando que a autenticação falhou: Em caso de sucesso, será nos apresentado o texto que configuramos para aparecer: Qualquer dúvida ou problemas que venham a surgir estou à disposição pessoal!!
×
×
  • Create New...