Código prolijo
Clase 4 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
Clase 4 de 26 • Curso de Patrones de Diseño y Buenas Prácticas en PHP
Contenido del curso
Julio Cardenas
José Gregorio Block
Angel Martínez
Daniel Quispe
Elisa Zamarron Muñoz
Bernardo Aguayo Ortega
Mariangelica Useche
Juan Luis Rojas León
Andrés Felipe Carreño
Gedward Romo
Angel Javier Sanchez Tenjo
Angel Javier Sanchez Tenjo
María Sierra
Andres Higuera
lesier gg
Usuario anónimo
Jhon Alexander Romero Gonzaga
JUAN VICTOR AGUILAR CUSICANQUI
Billi Ramirez
Erick Daniel Brito Arroyo
Miguel Camargo
rayner däppen
Sergio Estrella
Jhins Ledys Cárdenas Pardo
Carlos Eduardo Gomez García
Jhins Ledys Cárdenas Pardo
Daniel Sanchez
Jhon Alexander Alvarez Romero
Everson Vidal Mamani Huayta
Abigail Perez
Carlos Eduardo Gomez García
Carlos Bustillo
Benjamin Salas
Rony Porraz Vargas
Rony Porraz Vargas
Juan Antonio Oriza
José Gregorio Block
Enrique Devars
David Esteban Solorzano Taborda
les comparto el Zen de Python, creo que si uno lo sigue termina codificando muy bien
#Excelente
Si quieren ver directamente este mensaje en un programa basta con crear un archivo .py que contenga:
import this
si no lo sabias Prolijo: Que se lleva a cabo con detenimiento en los más pequeños detalles
Justo iba a preguntar está definición. Muchas gracias
gracias Dani, muy útil
Nunca está de más saber escribir código sin ayuda de terceros. Por otro lado, hay herramientas que nos ayudan a tener convenciones entre los programadores de un equipo. Tales son prettier o ESLint (ambas inclusive), con las que se puede compartir un archivo de configuración y así estandarizar cómo quedará escrito el código (por lo menos en formato: si llevará punto y coma al final de cada instrucción, si se tabula o serán 2 o 4 espacios, etc.). Para mí es muy importante conocer y utilizar estas herramientas que agilizan un poco el proceso. ¿Qué opinan ustedes, compañeros?
Super de acuerdo. Es una parte fundamental cuando se trabaja en equipo.
Concuerdo contigo Maria Angelica, es muy importante tener un estándar a la hora de trabajar en un equipo ya que luego no se vera un código solido y unificado.
Desarrollo en Python, busqué una herramienta de Lint para ese lenguaje se llama 'PyLint', veo que es muy útil porque menciona consejos sobre el código analizado, buenas prácticas y si tienes problemas de indentación https://www.pylint.org/
Gracias por tu aporte. Lo tendre encuenta en mis inicios en Python
Pylint se integra con varios IDEs
Código prolijo
Aquí tenemos un código con un problema de legibilidad. Y esto hace difícil entender las estructuras que corresponde cada bloque de código. Además, tenemos el problema de cómo posicionar las llaves.
<?php if(isset($_POST['txtFechainicial']) && $_POST['txtFechainicial']!="") { $where[] = "fecha_recibo > ".$_POST['txtFechainicial'].""; } if(isset($_POST['txtFechafinal']) && $_POST['txtFechafinal']!="") { $where[] = "fecha_recibo < ".$_POST['txtFechafinal'].""; } if(isset($_POST['txtTrabajador']) && $_POST['txtTrabajador']!="") { $where[] = "trab_recibo = ".$_POST['txtTrabajador'].""; } if(isset($_POST['txtSerie']) && $_POST['txtSerie']!="") { $where[] = "serie1 = ".$_POST['txtSerie'].""; }
La solución a este problema es agregar tabulaciones. La convención sobre las llaves que la llave de apertura debería estar al lado del paréntesis que cierra la condición de if
<?php if (isset($_POST['txtFechainicial']) && $_POST['txtFechainicial'] != "") { $where[] = "fecha_recibo > " . $_POST['txtFechainicial'] . ""; } if (isset($_POST['txtFechafinal']) && $_POST['txtFechafinal'] != "") { $where[] = "fecha_recibo < " . $_POST['txtFechafinal'] . ""; } if (isset($_POST['txtTrabajador']) && $_POST['txtTrabajador'] != "") { $where[] = "trab_recibo = " . $_POST['txtTrabajador'] . ""; } if (isset($_POST['txtSerie']) && $_POST['txtSerie'] != "") { $where[] = "serie1 = " . $_POST['txtSerie'] . ""; }
✨ Recuerda: El código fuente se escribe para humanos.
Otro problema que podemos encontrarnos es el siguiente, aquí hay una falta de criterio en común, algunas de las líneas utilizan llaves y otras no. Esto significa que tenemos una Falta de estándar de codificación.
<?php if (isset($_GET['p'])) $p = $_GET['p']; else $p = 1; $t = ''; if (isset($_GET['t'])) $t = $_GET['t']; else if(isset($_GET['codigo'])) $t = $_GET['codigo']; else if(isset($_POST['TxtBuscar'])) $t = $_POST['TxtBuscar']; if (!empty($_POST['TxtBuscar'])) { $cadena = $valor[0]; }
Este el problema resuelto, en nuestro caso decidimos que lo mejor es utilizar las llaves.
<?php if (isset($_GET['p'])) { $p = $_GET['p']; } else { $p = 1; } $t = ''; if (isset($_GET['t'])) { $t = $_GET['t']; } else if(isset($_GET['codigo'])) { $t = $_GET['codigo']; } else if(isset($_POST['TxtBuscar'])) { $t = $_POST['TxtBuscar']; } if (!empty($_POST['TxtBuscar'])) { $cadena = $valor[0]; }
Estándar de codificación
Es una serie de reglas que nos dice como escribir nuestro código. Esto nos ayuda generar un código claro y consistente. También, nos evita que pierdas tiempo en decisiones triviales.
Cómo mejorar la legibilidad de nuestro código
Para la legibilidad en visual studio code utilizo Prettier. Esta extensión se encarga de identar y agregar otras cosas para que el código sea mucho mas legible. Si alguien quiere checarla les comparto su sitio web. Prettier
Also beautify
Muy bueno.
Mi cabeza estalla cuando encuentro llaves debajo de los if (en mi opinión es mejor ponerlo e el if) y no se si seguir con es estructura (aunque mi yo no me lo permite) o acomodar como el estandar?
No olviden que cada lenguaje tiene sus propias convenciones y que hay linters para todos
Aquí es donde entran los linters de los IDEs o editores de texto para ayudar en eso, ademas estudiar patrones de diseño.
Libro: Code Clean
El estandar de código más popular para PHP es PSR-2
Ya se encuentra Deprecated
Puedes poner en donde se encuentra Deprecated aqui se muestran todos los estandares y aparece activo
En el caso de JavaScript, un buen linter es ESLint. Si usas Visual Studio Code, lo puedes instalar como una extensión directamente. Hay muchos más, unos que pueden ser de una IDE para todos los lenguajes, como el de Atom, o uno para cada lenguaje, como puedes ver en esta colección de repos
Para trabajar con Python y VS Code que ayuda recomiendan para escribir código de la forma mas limpia?
La extensión de VSCode de Python que te sugiere al iniciar, igual hay muchas otras extensiones más. VSCode ya te autoidenta Python
Y unos consejos personles:
Separa todo con espacios, por ejemplo, muchas personas harían esto:
if True: print("Algo") while True: print("Otra cosa") a = 1 + 2 print("Finalizo el ciclo") else: print("Caso contrario") print("Otra linea")
En lo personal pienso que todo está pegado, así que a mi me gusta separar todo por espacios comunes:
if True: print("Algo") while True: print("Otra cosa") a = 1 + 2 print("Finalizo el ciclo") else: print("Caso contrario") print("Otra linea")
Es más legible, también separa la declaración de funciones y demás con doble espaciado:
def my_function(): print("This is my function") def my_other_function(): print("This is my other function")
Y usa... no recuerdo el nombre en Python, pero en JavaScript se llamarían strings literales jaja en lugar de concatenación:
nombre = "RetaxMaster" # Sí: print(f"¡Hola {nombre}!, bienvenido") # No: print("¡Hola " + nombre + "!, bienvenido")
Apenas inicio con Python, pero son cosas que me ayudan a leer mejor el código:D
Yo también uso el espaciado y le separación que manejas. Muchas gracias por sus recomendaciones.
Yo tengo la identación en visual estudio personalizada, es muy bueno ya que al programar, digamos para Unity, la identación no pega el primer { a la línea con código
Metodos de mejorar codigo: Definir estandar respetalo apoyate en algun linter
En VSCode le das Format Document y ya los arregla todo el desmadre que hago.. XD no es necesario estar arreglando uno por uno,..
alguien ya había escuchado la palabra ++prolijo++?
¡Hola!, se refiere a algo que es "impecable" por asi decirlo, en el sentido de que está bien hecho o que está bien escrito, que es algo de calidad
Prolijo es algo que se determina claramente, es muy claro en los detalles.
¿Qué es un linder?
Sirve para buscar errores en el codigo antes o despues de compilarlo, esto ayuda mucho a la hora de desarrollar, como variables que no fueron utilizadas, importaciones, puntos y coma, etc.
checa esta lectura https://es.wikipedia.org/wiki/Lint
Estandar de codificación o convención de código: Es un término que describe convenciones para escribir código fuente en ciertos lenguajes de programación. Mas info en wikipedia: https://es.wikipedia.org/wiki/Estilo_de_programaci%C3%B3n
#Interesante
ESlint rules! <3
Una de las cosas que me gusta de Python es que nos obliga a indentar el codigo.