Code Monkey home page Code Monkey logo

cs-2019-01's Introduction

cs-2019-01's People

Contributors

dependabot-preview[bot] avatar dependabot[bot] avatar imgbotapp avatar kyriosdata avatar vixtorocha avatar

cs-2019-01's Issues

Simplifique (index.js, 119)

Em vez de

return (Math.floor(s % 7));

use

return s % 7;

pois produz o mesmo resultado, mas mais eficiente e não "distrai" o leitor do código.

Substituir switch

  • Switch das linhas 98 até 123 deve ser repensado. Observe que está sendo obrigado que alguns meses tenha exatamente uma quantidade especificada de dias. A intenção possivelmente era outra (o maior número de dias do mês?).
  • Observe que um vetor, conforme abaixo, poderia eliminar a necessidade do switch. Concorda?
    const numeroMaxDias = [ 0, 31, 28, 31, 30, 31, 30, ...... para o qual numeroMaxDias[mes] retornaria a quantidade máxima de dias do mês em questão. Sem necessidade desse enorme switch.

module.exports

Transfira para o final do arquivo e desta forma, evita function hoisting.

Esclarecimentos

Tendo em vista que:

  • aprendizado é um processo que demanda dedicação e esforço consideráveis, além de constantes;
  • falhas fazem parte do processo, de fato, no meu entendimento, são inevitáveis;
  • falhas e dificuldades, embora inevitáveis, não podem impedir o progresso, o aprendizado, o contínuo aprimoramento; e que
  • a turma dedica-se às atividades e há progresso claro (parabéns pelo esforço),

esclareço que:

  • Em vez de duas atividades para serem concluídas até o dia primeiro de julho, teremos apenas uma única atividade, ao contrário do que foi apresentado no dia de ontem (11/06/2019).
  • A data limite permanece primeiro de julho. Ou seja, a atividade a ser realizada conta com um período de três semanas inteiras para a sua realização, além de 7 horas em atividades supervisionadas.
  • Nossa aula do dia 27 de junho será não presencial. Ou seja, você terá tempo adicional para concluir suas atividades sem o ônus de se deslocar até o laboratório. Em consequência, dia 25 de junho é o último dia para você esclarecer dúvidas com o professor. Ou seja, você tem duas semanas inteiras para esclarecer suas dúvidas sobre o que deve ser feito, sobre o critério de avaliação, sobre as suas issues, sobre os pull requests, sobre a qualidade do que você está produzindo, sobre os tópicos pertinentes à construção de software, enfim, sobre as suas dúvidas que só você pode apresentar.
  • As datas acima são limites, tudo pode ser concluído antes.
  • Os critérios de avaliação permanecem, assim como a forma de definição da nota. Se você está em dúvida, então entre em contato com o professor. De forma resumida, deve-se concluir o que foi pedido (não parcialmente), atender issues e pull requests, e com a qualidade definida por várias ferramentas para que a sua nota seja pelo menos 6,0. Há risco significativo aqui se não houver interação com o professor. Mais uma vez, esclareça suas dúvidas especificamente para o seu repositório (elemento de avaliação contínua da disciplina).
  • A atividade a ser realizada, dado que antes eram duas, e agora apenas uma, predefinida pelo docente, é aquela da "Ordem de Serviço" (programa para identificar o dia da semana de uma data). Esta atividade foi identificada como pertencente ao tópico aula-10 (veja portal da disciplina).
  • Você pode optar pela outra atividade, aquela atribuída ao tópico aula-09, o que cabe a você escolher, em vez do tópico aula-10, predefinido pelo docente. Caso queira optar pela atividade da aula-09, então deverá fazer o registro correspondente no arquivo README.md do seu repositório até as 19h59min do dia 13/06/2019, conforme ilustrado abaixo.

Minha preferência

Atividade documentada no tópico aula-10 (veja portal da disciplina).

Estas mudanças visam assegurar que nosso foco na “formação de profissionais aptos a contribuir efetivamente com a produção de softwares de qualidade seguindo princípios éticos e postura profissional” (objetivo do curso de Engenharia de Software), não seja prejudicado.

Simplifique (index.js)

if (d < 0 || d > numeroMaxDias[m]) {
        return true;
    }

    return false;

pode ser substituído por

return d < 0 || d > numeroMaxDias[m];

Remova método main (classe Principal)

Caso queira acrescentar mais do que o que foi pedido, o que não é bom (gold plating), terá que colocar o método main em arquivo próprio, que implementaria, neste caso, interação com o usuário.

aula-12 (completar)

  • Funcionalidade não está implementada. Minha sugestão é, primeiro, crie o algoritmo para tal, depois realize a implementação.
  • Quando implementar não esqueça de documentar e escrever os testes de unidade correspondentes.

Simplifique (index.js)

    while (y <= s) {
        s = s - y;
    }

não é melhor para o nosso cérebro

    while (s >= y) {
        s = s - y;
    }

Nome inadequado (pegaNumExtenso)

Por favor, "pegaNumExtenso" ainda não é um nome claro. Não seria melhor "Obtem", "Recupera", ou ainda "recuperaValorPorExtenso", "obtemValorPorExtenso", ...

Possível bug

O trecho de código

    let a;
    for (let i = 0; i < n; i++) {
        if (a[i] != 0) {
            throw new Error("A string deve estar zerada.");
        }
    }

define a variável "a" e, logo na sequência, verifica o conteúdo de "a[i]". Para criar um vetor de n posições você deveria usar algo como abaixo, onde todas as entradas contém o valor 0.
const vetor = Array(n).fill().map((v,i) => 0);

Lidando com vetor

A função cpfStringToArray pode ser substituída por Array(str.length).fill().map((v,i) => parseInt(d[i])). Ou ainda, você pode usar a função, mas melhor seria cpf.push(parseInt(d[i])).

Badges (README.md) (remover)

Os badges no arquivo README.md (aula-11) estão referenciando o projeto exemplo. Remova-os. De fato, o conteúdo deste arquivo como um todo deve ser atualizado para particularizar para o aula-11.

Renomeie classe Principal

Esta classe, mesmo no contexto apresentado, provavelmente não é a principal. Lembre-se de que são funções que serão usadas por um projeto maior.

Menor escopo, melhor

Em index.js, linha 110, é definida variável que só é usada na linha 117. Esta distância aumenta a quantidade de "carga" em qualquer cérebro, sem benefício algum. Ou seja, defina a variável lá na linha 117.

Em tempo, não se trata de uma variável, neste caso, mas de uma constante (const).

Spring Boot (final classe e private method)

Remova de todas as classes com referência para o Spring Boot o modificador final e os construtores private. Esta exigência do PMD, suponho, não se aplica a estes casos e impede o funcionamento correto do serviço. Acredito que não tenha testado, pois assim não funciona.

checkstyle.xml (não obtido de Exemplo)

A configuração do checkstyle, checkstyle.xml, não foi obtida do projeto Exemplo, o que impede o uso desta configuração conforme o pom.xml. Copie este arquivo para o local correspondente.

Argumentos não devem ser tratados como variáveis locais

Em index.js, linhas 113 e 114, há uso de argumentos como se fossem variáveis locais. Argumentos idealmente devem ser tratados como "constantes" no corpo da função em questão. Ou seja, você deve criar outras variáveis e não alterar o valor nem de m nem de a.

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.