1
resposta

def extraiValor

O valor não poderia ter sido importado dentro do extraiArgumentos?

Outra dúvida, é que o pycharm sempre emite um alerta dizendo que os nomes das funções deveriam estar com letras minúsculas.

class ExtratorArgumentosUrl:

def __init__(self,url):
    if self.urlEhValida(url):
        self.url = url.lower()
    else:
        raise LookupError("Url inválida!")

@staticmethod
def urlEhValida(url):
    if url:
        return True
    else:
        return False

def extraiArgumentos(self):

    buscaMoedaOrigem = "moedaorigem".lower()
    buscaMoedaDestino = "moedadestino".lower()
    buscaValor = "valor"

    indiceInicialMoedaOrigem   = self.encontraIndiceInicial(buscaMoedaOrigem)
    indiceFinalMoedaOrigem     = self.url.find("&moedadestino")

    indiceInicialMoedaDestino  = self.encontraIndiceInicial(buscaMoedaDestino)
    indiceFinalMoedaDestino    = self.url.find("&valor")

    indiceInicialValor         = self.encontraIndiceInicial(buscaValor)

    moedaOrigem = self.url[indiceInicialMoedaOrigem:indiceFinalMoedaOrigem]
    moedaDestino = self.url [indiceInicialMoedaDestino:indiceFinalMoedaDestino]
    valorConversao = self.url [indiceInicialValor:]

    return moedaOrigem, moedaDestino, valorConversao

def encontraIndiceInicial(self, moedaBuscada):
    return self.url.find(moedaBuscada) + len(moedaBuscada) + 1
1 resposta

Oii Henrique, como você está? Espero que esteja bem ^-^

A operação de extrair o valor poderia ser feita dentro do método extraiArgumentos, não há problemas quanto a isso. Creio que por questões de separação de responsabilidades de código, onde cada função deve ser responsável por uma única tarefa, o professor optou por separar essas funções, mas o valor também pode ser considerado um argumento, por isso, não há problemas em retorná-lo junto no método extraiArgumentos.

Quanto ao alerta que está sendo emitido pelo PyCharm, ele diz respeito a estilização de código Python que por convenção diz que os nomes das funções devem seguir o estilo snake_case, ou seja, letras minúsculas e as palavras separadas por underline. O estilo que o instrutor seguiu é denominado de camelCase, onde a primeira palavra é minúscula e a primeira letra das próximas palavra são maiúsculas. Está errado? Não está, mas é uma boa prática seguir o estilo que a documentação padroniza, o snake_case. Por exemplo:

  • camelCase: extraiArgumentos, urlEhValida
  • snake_case: extrai_argumentos, url_eh_valida

O Guia de estilos da linguagem Python é conhecido como PEP 8, deixarei abaixo o link para documentação do mesmo (este conteúdo está em inglês, mas ao utilizar o recurso de tradução do próprio navegador é possível compreender):

Qualquer dúvida estou por aqui, a gente vai conversando.

Grande abraço!