Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Mesmo resultado sem implementar Factory

Antes de assistir a aula completa, tentei realizar o exercício e obtive o mesmo resultado escrevendo de uma forma diferente, sem implementar Factory, dessa forma está correto?

Segue código abaixo:

from validate_docbr import CPF, CNPJ


class Documento:

    def __init__(self, info_documento):
        self.__documento = str(info_documento)

    def __str__(self):
        return self.__valida_formata_documento()

    def __valida_formata_documento(self):
        val_cpf = CPF()
        val_cnpj = CNPJ()
        if val_cpf.validate(self.__documento):
            return val_cpf.mask(self.__documento)
        elif val_cnpj.validate(self.__documento):
            return val_cnpj.mask(self.__documento)

        raise ValueError("Documento Inválido!")


documento = Documento("Informe um documento")
print(documento)
1 resposta
solução!

Oii Jean, como você está?

Na área de programação é comum que tenha diversas formas de se chegar a um resultado, em alguns casos, algumas soluções serão mais performáticas do que outras, tanto em tempo de execução, quanto em qualidade de código. Sua proatividade em ir além do que foi ensinado na aula e buscar sua própria implementação é super válida e incentivo que você continue praticando e evoluindo seus estudos desse modo. O seu código, apesar de não ser igual ao do instrutor, cumpre o objetivo e está legível, não infringe as boas práticas. O padrão de projeto Factory escolhido pelo instrutor teve o objetivo didático, para demonstrar a implementação e seu uso.

A Factory ensinada no curso é um padrão de projeto, ou seja, uma boa prática de código para quando temos situações que tenham instanciação de diversas classes e que isso dependa de algumas condições para acontecer - uma factory é uma fábrica e nesse caso, uma fábrica de objetos, que podem ser de tipos iguais ou diferentes, a depender da condição. Vale ressaltar que quando estamos trabalhando com o Factory ou com outros padrões de projeto, tudo dependerá do escopo, em projetos pequenos por exemplo, fazer o uso de padrões pode apenas aumentar a complexidade do código.

Caso queira evoluir ainda mais seus estudos e conhecer outros padrões de projetos, recomendo a leitura dos artigos presentes no site Refatoring Guru, onde será apresentado com detalhes sobre os padrões Factory Method, Abstract Factory, Decorator, Chain of Responsibility e muitos outros.

Lembre-se que pode contar sempre com o fórum Alura, seja para postar o seu desenvolvimento ou para tirar suas dúvidas.

Fico à disposição.

Abraços e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software