2
respostas

[Sugestão] Minha solução. Alguém para dar uma opinião sobre??

Bom, eu inseri os laços dentro do método Parse mesmo. Segue o código abaixo:

public static Avaliacao Parse(string texto)
    {
        int nota = int.Parse(texto);
        if (nota < 0)
        {
            return new Avaliacao(0);
        }
        if (nota > 10)
        {
            return new Avaliacao(10);
        }
        return new Avaliacao(nota);
    }

Porém, olhando a resolução do exercício, notei que o meu ficou diferente.

Assim, seguindo as boas práticas da programação, sempre é melhor fazer esse encapsulamento dentro do próprio construtor mesmo?

Por favor, se puderem dar alguma opinião sobre o meu código acima, quero entender melhor para saber onde inserir adequadamente essas regras e os códigos como um todo.

2 respostas

Wellington,

Vou passar minhas opiniões.

"Porém, olhando a resolução do exercício, notei que o meu ficou diferente."

É que o instrutor já tratou dentro do construtor (ao construir o objeto que faz a instância da classe) o problema da nota ser recebida fora da faixa de trabalho.

As "tarefas" na resposta do instrutor foram mais isoladas.

"Assim, seguindo as boas práticas da programação, sempre é melhor fazer esse encapsulamento dentro do próprio construtor mesmo?"

Não obrigatoriamente, mas a resposta do instrutor neste caso foi mais elegante. pois cada passo foi bem isolado. Sobre Boas práticas, temos o SOLID, o KISS, o DRY, o LoD, o YAGNI abaixo coloco alguns links interessantes se você quiser saber mais.

===============================================================

Pílula de Arquitetura - Princípios SOLID

Os princípios SOLID para programação e design orientados a objeto são de autoria de

Robert C. Martin (mais conhecido como Uncle Bob) e datam do início de 2000.

https://www.macoratti.net/11/05/pa_solid.htm

===============================================================

O que é SOLID: O guia completo para você entender os 5 princípios da POO

João Roberto da Paixão

Published in Desenvolvendo com Paixão

10 min read · Jan 6, 2019

https://medium.com/desenvolvendo-com-paixao/o-que-%C3%A9-solid-o-guia-completo-para-voc%C3%AA-entender-os-5-princ%C3%ADpios-da-poo-2b937b3fc530

===============================================================

Princípios SOLID: Single Responsability Principle

Prosseguindo com a série sobre os princípios SOLID, vamos abordar o Single Responsability Principle, ou Princípio da Responsabilidade Única.

há 3 anos 9 meses

https://www.treinaweb.com.br/blog/principios-solid-single-responsability-principle#:~:text=SOLID%20%C3%A9%20um%20acr%C3%B4nimo%20para,da%20Substitui%C3%A7%C3%A3o%20de%20Liskov)%3B

===============================================================

SOLID, KISS, DRY, YAGNI: Desvendando esses princípios de código

4 de janeiro de 2023

Por Awari

https://awari.com.br/solid-kiss-dry-yagni/?utm_source=blog&utm_campaign=projeto+blog&utm_medium=SOLID,%20KISS,%20DRY,%20YAGNI:%20Desvendando%20esses%20princ%C3%ADpios%20de%20c%C3%B3digo

===============================================================

Desvendando o mundo mágico dos acrônimos: SOLID, KISS, YAGNI, DRY, DDD, TDD

Thiago Moraes

Posted on 3 de set. de 2020

Introdução

No artigo de hoje vou esclarecer um pouco sobre essas siglas que ainda deixam muita gente confusa. De maneira geral, eu diria que a intenção é proporcionar o desenvolvimento de software de maior qualidade. Vamos começar então abordando o que seria um software de qualidade e qual a importância do mesmo.

https://dev.to/thiagomr/desvendando-o-mundo-magico-dos-acronimos-solid-kiss-yagni-dry-ddd-tdd-2onp

===============================================================

Princípios de Design de Software: Explorando SOLID, DRY, KISS LoD e YAGNI

Dario Alves Junior

CIO | CTO | Digital Strategy | DevOps Specialist | Cloud Architect | SRE | Tech Lead | Innovation na Driver Technology

2 de maio de 2023

https://www.linkedin.com/pulse/princ%C3%ADpios-de-design-software-explorando-solid-dry-e-alves-junior/?originalSubdomain=pt

===============================================================

Espero ter ajudado.

[]'s,

Fabio I.

Wellington, Usando o seu código, outro programador ainda poderá instanciar uma Avaliação com nota fora dos limites.

Avaliacao notaNegativa = new(-5);

Como você bem observou, o código da resposta do instrutor tem o comportamento esperado de atribuição da nota implementado no construtor da classe. Logo, ao instanciar um novo objeto com a nota, o comportamento será aplicado (tanto para alguém que instanciar a classe diretamente, quanto para quem utilizar o método Parse).

O melhor lugar para aplicar um "comportamento" da classe sempre vai depender do que se deseja como resultado desse comportamento.

No caso desse exercício, validar a nota no construtor garante que todos os objetos da classe Avaliacao irão seguir a regra de validação.