Code Monkey home page Code Monkey logo

jsexpert-challenge02-lifecycle's Introduction

David Campos

Story: Entendendo conceitos fundamentais do ciclo de vida do Javascript

A idéia é implementar códigos pensando no comportamento do Javascript com base no JS Expect - Módulo 03, que trata de Conceitos fundamentais sobre o ciclo de vida do Javascript.

Baseando-se nos testes automatizados já criados neste repo - similares aos feitos no Desafio Anterior -, implemente o código em cada uma das services existentes.

Funcionalidades

Requisitos

  1. Implemente os métodos marcados com um //@TODO: comment em cada uma das respectivas services, na ordem que preferir:
  • services/StatementsService
  • services/WeirdMathService
  • services/ReferencesService
  • services/ObjectMethodsService

Nota: Para saber quais os comportamentos esperados de cada método, verifique os testes unitários de cada service.

  1. Remova os //@TODO: comments de cada função implementada, e garanta que os testes referentes à essa função estejam funcionando.

Nota: Não são necessárias alterações nos testes. Eles já estão prontos e servem de guia durante a execução do desafio

Testes

Você saberá que o desafio está concluído quando executar o comando npm run test e todos os testes passarem. O resultado deve ser algo parecido com isso:

image

Extras

  • Desafio opcional: Note que no arquivo test/unit/service/ReferencesService.test, existe um teste na linha 44 com um it.skip(). Esse é um desafio opcional, e caso queira implementá-lo é só remover o .skip e implementar a respectiva função que está sendo testada na ReferencesService

Dicas

Sinta-se livre pra desenvolver sua solução da melhor maneira possível, e caso já queira uma dica sobre como organizar as idéias, aqui vai:

  • Lembre que cada @TODO: comment tem uma dica sobre como resolver o problema
  • Fique atento ao comportamento esperado do método nos testes
  • Não esqueça de conferir as aulas do curso denovo para fixar mais ainda os conhecimentos
  • Caso queira executar apenas 1 teste por vez para manter o terminal sempre limpo e fácil de trabalhar, você pode ir no teste ou na suite de testes que deseja focar e usar um .only. (ex.: describe.only(..., it.only(...)

Arquitetura e onde trabalhar

project
│   README.md
│   package.json
│
└───src
│   │  
│   └───service
│       │   ObjectMethodsService.js     // EDIT HERE !
│       │   ReferencesService.js        // EDIT HERE !
│       │   StatementsService.js        // EDIT HERE !
│       │   WeirdMathService.js         // EDIT HERE !
│   
└───test
│   │  
│   └───unit/service
│       │   ObjectMethodsService.js     // DO *NOT* EDIT HERE !
│       │   ReferencesService.js        // DO *NOT* EDIT HERE !
│       │   StatementsService.js        // DO *NOT* EDIT HERE !
│       │   WeirdMathService.js         // DO *NOT* EDIT HERE !
│         

Checklist features

  • ObjectMethodsService

    • Deve entender Coerção de tipos e Objects Lifecycle e implementar soluções usando valueOf, toString e [Symbol.toPrimitive].
  • ReferencesService

    • Deve entender tipos de referência e Mutability vs Immutability, e implementar soluções copiando ou não referências de objetos.
  • StatementsService

    • Deve entender o uso de conditional statements no Javascript e seus respectivos retornos em diferentes cenários.
  • WeirdMathService

    • Deve entender o fluxo de vida do Javascript e as coerções implícitas que ocorrem em expressões matemáticas.

Submissão

  1. Crie um fork deste repositório e modifique o README.md inserindo o seu nome no início do arquivo.

  2. Instale as dependências usando npm i e garanta que os testes rodam normalmente com npm run dev

Nota: Como a idéia é que você implemente os códigos a fim de fazer os testes passarem, a princípio todos os testes estarão quebrando, então não se assuste. :)

  1. Implemente cada uma das funções marcadas com um //@TODO: comment (e não se esqueça de remover esses comentários uma vez que concluir a implementação)

  2. Garanta que todos os testes estejam rodando e, caso queira, conclua o desafio opcional mencionado acima.

  3. Envie o link no canal #desafios-jsexpert da nossa comunidade no discord.

Até quando?

Se você está pegando esse desafio na estréia, corre lá e envia pra gente até Quarta-feira, 15 de dezembro de 2021 (15/12/2021)!

jsexpert-challenge02-lifecycle's People

Contributors

dfcamposs avatar wellssa avatar

Watchers

 avatar

jsexpert-challenge02-lifecycle's Issues

Correção do Desafio

Implementação

  • Completou com êxito o desafio principal e o sub-desafio!

Possíveis pontos de melhoria

  • É interessante lembrar de dar uma olhada nos metadados no package.json e nas commit messages e fluxo de desenvolvimento. :D Esses detalhes parecem simples mas fazem uma diferença enorme na nossa carreira enquanto devs! o/

ObjectMethodsService

Pontos fortes

ReferencesService

Pontos fortes

  • Implementação impecável
  • Ótimo domínio de tipos de referência e Mutability vs Immutability no Javascript
  • Interessante implementação usando o object.assign. :) Uma outra implementação possível seria devolver exatamente a mesma instância com um return object

StatementsService

Pontos fortes

  • Implementação impecável
  • Ótimo domínio do uso de conditional statements no Javascript e seus respectivos retornos em diferentes cenários.

WeirdMathService

Pontos fortes

  • Implementação impecável
  • Ótimo domínio do fluxo de vida do Javascript e coerções implícitas que ocorrem em expressões matemáticas.

Considerações finais

Concluiu com proficiência o Desafio principal e o sub-desafio. Demonstrando ótimo domínio de princípios essenciais do Javascript. Parabéns, David! 🚀

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.