1
resposta

[Projeto] Minha solução, sem criar um outo método

Tentei deixar o menos complexo possível, e escolhi por deixar no mesmo método de validação. Mas acho que ficou meio engessado, preso naqueles parâmetros. Como poderia melhorar?

class ExtratorURL:
    def __init__(self, url):
        self.url = self.sanitiza_url(url)
        self.valida_url()

    def sanitiza_url(self, url):
        if type(url) == str:
            return url.strip()
        else:
            return ""

    def valida_url(self):
        if not self.url or not self.get_url_base().startswith("https://"):
            raise ValueError("URL inválida")
        elif not self.get_url_base().endswith("cambio"):
            raise ValueError("Página indisponível")

    def get_url_base(self):
        indice_interrogacao = self.url.find('?')
        url_base = self.url[:indice_interrogacao]
        return url_base

    def get_url_parametros(self):
        indice_interrogacao = self.url.find('?')
        url_parametros = self.url[indice_interrogacao + 1:]
        return url_parametros

    def get_valor_parametro(self, parametro_busca):
        indice_parametro = self.get_url_parametros().find(parametro_busca)
        indice_valor = indice_parametro + len(parametro_busca) + 1
        indice_e_comercial = self.get_url_parametros().find('&', indice_valor)
        if indice_e_comercial == -1:
            valor = self.get_url_parametros()[indice_valor:]
        else:
            valor = self.get_url_parametros()[indice_valor:indice_e_comercial]
        return valor

extrator_url = ExtratorURL("https://bytebank.com/cambio?moedaDestino=dolar&quantidade=100&moedaOrigem=real")
valor_quantidade = extrator_url.get_valor_parametro("Destino")
print(valor_quantidade)
1 resposta

Olá Gilnei, como você está?

É bastante comum que ao iniciarmos na jornada na programação, escrevamos códigos mais "robustos", com soluções que, com o tempo e a experiência, poderíamos ter simplificado ou melhorado. É um processo natural de aprendizado e te parabenizo pela iniciativa de ir além do proposto em aula.

A sensação de engessamento do código, é devido a termos trabalhado e feito o código em aula para uma URL em específico, a do Bytebank, porém, para validarmos qualquer tipo de URL, mais validações teriam de ser feitas e utilizando outros recursos, como expressões regulares, tema esse que será abordado na aula validando nossa URL com RegEx. Além disso, para tornar o código ainda mais flexível poderíamos passar para as funções o parâmetro de busca a ser encontrado, seja um "ê comercial" (&), um "hífen" (-), dentre outros.

Reforço que com o tempo e a prática, você verá que é possível melhorar e otimizar suas soluções de código, então, em um primeiro momento, não se preocupe se seus primeiros códigos parecerem robustos ou complicados demais. A evolução do código é um processo natural e constante.

Espero ter te ajudado e enriquecido suas ideias de aprimoramento.

Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Em caso de dúvidas estou à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. 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