1
resposta

[Sugestão]Funções para diminuir repetição no código - Atualizando dados do servidor

Estou adorando o curso e gostaria de compartilhar uma dica:

Como as funções "criar" e "atualizar" são muito parecidas, é interessante reduzir a repetição do código. Portanto, o primeiro passo é identificar quais são as linhas que se repetem, que no caso desse projeto são os valores do formulário e salvar no banco de dados:

def criar():
    #valores do formulário
    nome = request.form['nome']
    categoria = request.form['categoria']
    console = request.form['console']
    jogo = Jogos.query.filter_by(nome=nome).first()

    if jogo:
        flash('Jogo já existente!')
        return redirect(url_for('index'))
    novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
    #salvar no banco 
    db.session.add(novo_jogo)
    db.session.commit()

    return redirect(url_for('index'))
def atualizar():
    jogo = Jogos.query.filter_by(id=request.form['id']).first()
    #valores do formulário
    jogo.nome = request.form['nome']
    jogo.categoria = request.form['categoria']
    jogo.console = request.form['console']

    #salvar no banco 
    db.session.add(jogo)
    db.session.commit()

    return redirect(url_for('index'))

Depois criamos as funções e substuímos as repetições:

def formulario_valores():
    return (
    request.form['nome'],
    request.form['categoria'],
    request.form['console']
    )

def salvar_no_banco(objeto):
    db.session.add(objeto)
    db.session.commit() 
def criar():
    nome, categoria, console = formulario_valores()
    jogo = Jogos.query.filter_by(nome=nome).first()
    if jogo: #==True
        flash('Jogo já listado!')
        return redirect(url_for('index'))

    novo_jogo = Jogos(nome=nome, categoria=categoria, console=console)
    salvar_no_banco(novo_jogo)
    return redirect(url_for('index'))
def atualizar():
    jogo = Jogos.query.filter_by(id=request.form['id']).first()
    jogo.nome, jogo.categoria, jogo.console = formulario_valores()
    salvar_no_banco(jogo)
    return redirect(url_for('index'))

Acho um exercício legal para se fazer durante os projetos :)

1 resposta

Oi Victoria! Tudo bem?

Que legal que você está gostando do curso e já está pensando em maneiras de melhorar o código! Sua sugestão de criar funções para evitar repetição é excelente e ajuda a manter o código mais limpo e nas manutenções futuras.

Ao identificar partes do código que se repetem, como a coleta de valores do formulário e o salvamento no banco de dados, você já está aplicando um princípio importante de programação: DRY (Don't Repeat Yourself). Isso não só reduz a quantidade de código, mas também facilita a manutenção e a leitura.

Seu exemplo de refatoração está bem claro e é um ótimo exercício para praticar. Ao criar as funções formulario_valores() e salvar_no_banco(), você encapsula a lógica repetida, o que é uma prática muito boa. Dessa forma, se algum dia precisar mudar a forma como os dados são coletados ou salvos, você só precisa alterar em um lugar.

Por exemplo, se você decidir mudar a forma como os dados são salvos no banco de dados, só precisará alterar a função salvar_no_banco(), e todas as partes do seu código que a utilizam serão automaticamente atualizadas.

Parabéns pelo bom trabalho e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.