如何降低 python 验证的复杂性

问题描述 投票:0回答:1

我正在尝试降低代码的复杂性,并使用 Scrutinizer 来测量这些值。在我的代码中,大部分复杂性都是由于验证造成的,那么我该如何改进它们呢?

class gestionRegister:
#VALIDA LA 1 SECCION DEL FORMULARIO EN EL QUE PIDE LOS DATOS PERSONALES
def formulario1(page, nombre, apellido, cedula, numTelefono, correo, ubicacion, nivelUser, tipoCorreo, codigoTelefono, tipoCedula, formulario, contenedor1, contenedor2):
    #ARREGLOS
    arregloCedula = f"{tipoCedula.value}-{cedula.value}"
    arregloCorreo = f"{correo.value}{tipoCorreo.value}"
    arregloTelefono = f"{codigoTelefono.value}-{numTelefono.value}"
    global nuevoLider
    if (nombre.value == "") or (apellido.value == "") or (cedula.value == "") or (numTelefono.value == "") or (correo.value == "") or (ubicacion.value == "") or (nivelUser.value == None) or (tipoCorreo.value == None) or (codigoTelefono.value == None) or (len(nombre.value) in range(1, 3)) or (len(apellido.value) in range(1, 4)) or (len(cedula.value) in range(1, 7)) or (len(numTelefono.value) in range(1, 7)) or (len(ubicacion.value) in range(1, 3)):
        if nombre.value == "":
            nombre.error_text = mensaje.campoFaltante
            page.update()
        
        if apellido.value == "":
            apellido.error_text = mensaje.campoFaltante
            page.update()
        if cedula.value == "":
            cedula.error_text = mensaje.campoFaltante
            page.update()
        if numTelefono.value == "":
            numTelefono.error_text = mensaje.campoFaltante
            page.update()
        if correo.value == "":
            correo.error_text = mensaje.campoFaltante
            page.update()
        if ubicacion.value == "":
            ubicacion.error_text = mensaje.campoFaltante
            page.update()
        if nivelUser.value == None:
            nivelUser.error_text = mensaje.campoFaltante
            page.update()
        if tipoCorreo.value == None:
            tipoCorreo.error_text = mensaje.campoFaltante
            page.update()
        if codigoTelefono.value == None:
            codigoTelefono.error_text = mensaje.campoFaltante
            page.update()
        if len(nombre.value) in range(1, 3):
            nombre.error_text = "Minimo de caracteres 3"
            page.update()
        if len(apellido.value) in range(1, 4):
            apellido.error_text = "Minimo de caracteres 4"
            page.update()
        
        if len(cedula.value) in range(1, 7):
            cedula.error_text = "Minimo de caracteres 7"
            page.update()
        
        if len(numTelefono.value) in range(1, 7):
            numTelefono.error_text = "Numero de telefono no valido"
            page.update()
        if len(ubicacion.value) in range(1, 3):
            ubicacion.error_text = "Minimo de caracteres 3"
            page.update()
    elif db.verificarUbicacion(ubicacion.value):
        page.snack_bar = SnackBar(content=Text("Esta ubicacion ya esta en uso"))
        page.snack_bar.open = True
        page.update()
    elif db.verificarCedula(arregloCedula):
        page.snack_bar = SnackBar(content=Text("Esta cedula ya esta ligada a un usuario"))
        page.snack_bar.open = True
        page.update()
    elif db.verificarTelefono(arregloTelefono):
        page.snack_bar = SnackBar(content=Text("Este numero de telefono ya esta asignado a un usuario"))
        page.snack_bar.open = True
        page.update()
    elif db.verificarCorreo(arregloCorreo):
        page.snack_bar = SnackBar(content=Text("Este correo ya esta en uso"))
        page.snack_bar.open = True
        page.update()
    else:
        nuevoLider = Lideres(nombre.value, apellido.value, arregloCedula, arregloTelefono, arregloCorreo, ubicacion.value, nivelUser.value)
        rutas.animar(formulario, contenedor1, contenedor2, page)

这就是我构建其他验证的方式,那么最理想的方法是什么?

如果您给我一个例子,那将会很有帮助,这样我就可以指导自己并能够更改所有验证

python validation optimization time-complexity complexity-theory
1个回答
0
投票

神圣的 if 语句将它们放在一个 case 中:sob:

© www.soinside.com 2019 - 2024. All rights reserved.