Crea una cuenta o inicia sesi贸n

隆Contin煤a aprendiendo sin ning煤n costo! 脷nete y comienza a potenciar tu carrera

C贸digo espagueti

4/19
Recursos

Aportes 18

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Recuerdo cuando empezaba a programar con PHP, no ten铆a a nadie que me guiara y acababa realizando mucho c贸digo espagueti, llegu茅 al punto que necesitaba hacer cambios y dec铆a: 鈥淧Ero tengo esta funci贸n aqu铆, pero tambi茅n la tengo ac谩, tengo que cambiar muchas funciones鈥 poco a poco fui mejorando mis pr谩cticas.

Creo que el ejemplo m谩s com煤n de c贸digo espagueti es cuando mezclas HTML con PHP, acabas creando una chapuza horrible que lo miras y dices 鈥淲TF is this?鈥 lo peor que puedes hacer con PHP es imprimir HTML mediante la instrucci贸n echo, en serio, no lo hagas.

Una forma f谩cil de ejemplificar el c贸digo espagueti y una buena soluci贸n es, tomando el ejemplo de la clase, un sistema que generar谩 archivos de excel dependiendo de lo que se necesite, podr铆amos tener algo as铆:

<?php

if($generar_archivo_para_clientes){

	// TODO el codigo para generar el Excel para el cliente

}
else {

	// Exactamente el MISMO c贸digo para generar el Excel para los proveedores

}

Aqu铆 estariamos repitiendo c贸digo, y lo 煤nico que cambia es para qui茅n lo vamos a generar, por lo que una mejor soluci贸n podr铆a ser:

<?php

class Excel {

    public function generar($generar_para) {
        // TODO El codigo para generar el archivo
    }
    
}



$excel = new Excel();

if($generar_archivo_para_clientes) {
    $excel->generar("clientes");
}
else {
    $excel->generar("proveedores");
}

Y de esta forma estamos reutilizando c贸digo, y solo le tenemos que dar mantenimiento al c贸digo una sola vez, y es m谩s legible, por su puesto, podr铆amos tener la clase en un archivo diferente y cargarla mediante composer鈥

C贸digo espagueti


Un c贸digo espagueti es c贸digo que est谩 estructurado mediante if, while, for netamente, todo en un mismo archivo donde solamente buscamos resolver el problema. Cuando creamos c贸digo estructurado corremos peligro de crear c贸digo espagueti. La OOP nos ayuda evitarlo.

馃捀 El dinero en esta profesi贸n est谩 en el mantenimiento del c贸digo.

C贸mo evitar el c贸digo espagueti

  1. Resolver el problema
  2. Crea de forma l贸gica y coherente diferentes m茅todos que reemplacen tus estructuras de control.
  3. Crea una o varias clases dependiendo el caso.

C贸digo Spaghetti c贸digo sin ning煤n tipo de orden. Que funciona pero que no es legible. Esos fueron los principios del desarrollo web con PHP. Poco a poco fuimos profesionalizandonos y el paradigma POO nos termin贸 de elevar

como evitarlo:
1 resolver el problema.
2 crear de forma l贸gica m茅todos coherentes que reemplacen mis estructuras de control/ mejoras al c贸digo.
3 crear una o varias clases dependiendo el caso.

MIerd* que tan sesgado estaba, el money no esta en crear sistemas ,esta en mantenerlos, as铆 como cualquier otra profesion, como los tecnicos en mecanica o refrigereaci贸n, no les pagan para que hagan un refri o creen un carro nuevo a su cliente.

Ellos mantien funcionando al 100 el carro solo eso y eso es complicado , wou esta fue mi cara cuando Italo dijo eso

Cabe mencionar que soy 鈥渘otavo co muy poca experiencia laboral鈥 y es por esa la razon de mi expresion

Re factorizar: Es cuando se mejora el c贸digo sin modificar el resultado final

馃榾 Refactoriza tu c贸digo para hacerlo mantenible y escalable.

Una vez un mentor me dijo 鈥淭rata de hacer las cosas lo m谩s faciles posibles, no te quiebres la cabeza de m谩s鈥, y es un buen consejo a la hora de empezar a resolver un problema, ya resulto el problema si es necesario la refactorizaci贸n, comentar el c贸digo y pulirlo para llevarlo al commit con git.

Crear de forma l贸gica m茅todos coherentes que reemplacen mis estructuras de control

C贸digo espagueti

Hace referencia al plato hondo llego de espagueti, donde todo esta all铆 revuelto. Con esto se puede comparar con el c贸digo cuando programamos de forma estructurada.

Un C贸digo espagueti b谩sicamente es que se encuentra estructurado mediante estructuras condicionales como if, while for etc.

Debemos resolver el problema, luego refactorizar, esto se da cuando mejoramos nuestro c贸digo sin alterar su resultado.
Crear las clases necesarias dependiendo del caso.

C贸digo espagueti hace referencia precisamente a un plato hondo de espagueti, todo est谩 all铆.
Imagina sacar diferentes elementos de ese plato. Es precisamente esa la comparaci贸n que queremos que hagas con el c贸digo.
Cuando creamos c贸digo estructurado corremos peligro, tenemos el riesgo de crear c贸digo espagueti y precisamente las caracter铆sticas de la programaci贸n orientada a objetos nos ayudan a evitarlo.
Un c贸digo espagueti b谩sicamente es un c贸digo est谩 estructurado mediante if, why, for netamente todo en un mismo archivo y simplemente pensamos en resolver el problema.
Es correcto resolver el problema y despu茅s refactorizar.
Refactorizar, recordemos es cuando mejoramos nuestro c贸digo sin alterar su resultado.
Tengo un problema, lo resuelvo; cuando ya funciona, refactorizo.
Refactorizar es precisamente alcanzar el mismo resultado teniendo un mejor c贸digo creado.
En este caso el paso de refactorizar es nuestro escal贸n hac铆a el mundo profesional, un c贸digo que simplemente funciona puede estar lleno de grandes estructuras condicionales.
La programaci贸n orientada a objetos nos va a servir a organizar mejor todo esto, para que tengamos en el futuro un c贸digo que podamos mantener.
A veces creemos que el dinero en la programaci贸n est谩 en la creaci贸n de sistemas y realmente no, el dinero en este negocio, el dinero en esta profesi贸n est谩 en el mantenimiento, en que el sistema le pueda servir a tu cliente por 5 o 10 a帽os, si nosotros no programamos de esta manera no va a sobrevivir los primeros 2 a帽os precisamente porque creamos c贸digo utilizando estas caracter铆sticas que hemos explicado.
驴C贸mo evitar el c贸digo espagueti?

  1. Resuelvo el problema.

  2. Crea de forma l贸gica y coherente diferentes m茅todos que reemplacen tus estructuras de control.

  3. Crea una o varias clases dependiendo el caso.

Me agrada mucho que se nos den todos estos temas de buenas pr谩cticas antes de pasar al c贸digo.
Sin duda por querer hacer las cosas r谩pido, tendemos a escribir c贸digo sucio y c贸digo espagueti鈥
Ahora entiendo que no esta mal hacer una implementaci贸n sucia en un inicio pues se busca que funcione pero acto seguido es refactorizar esa soluci贸n para que sea m谩s f谩cil un futuro mantenimiento de nuestra parte o de alguien m谩s que le toque la desgracia de ver nuestro c贸digo jaja

Codigo espagueti.

Este surge, cuando simplemente pensamos en resolver un problema, y nunca hacer algo para mejorarlo. 

Es correcto resolver el problema y luego refactorizar.

Refactorizar es un escalon a un alto niver profesional.

Como evitar el codigo espagueti

    1. Resuleve el problema
    2. Crear de manera logica y coherente en diferentes metodos que remplaze tu estrutcura de control.
    3. Crea una o varias clases dependiendo el caso.

4. C贸digo espagueti

驴C贸mo evitarlo?

  • Paso 1: Resuelve el problema.
  • Paso 2: Crea m茅todos para resolver.
  • Paso 3: Crea una o varias clases (dependiendo del caso).

Creo que la diferencia entre un desarrollador con experiencia y un novato es que el primero piensa en refactorizar y el segundo dice hay que hacer todo de cero

En un punto de nuestras vidas comenzamos con PHP, pero realmente nos ense帽an desde un principio a hacerlo mal.

Precisamente, termine hace poco un proyecto con PHP b谩sico y HTML, realmente estoy emocionado por mi proyecto. Pero en el proceso me di cuenta que realmente es muy tedioso esa forma de copiar y pegar c贸digo, tambi茅n cuando ocurr铆a errores muy especifico, tomaba mucho tiempo encontrar el error y solucionarlo, cuando lo solucionaba pum 20 errores m谩s provenientes del mismo c贸digo.
Les dejo el c贸digo de mi proyecto, por si quieren ver un ejemplo de c贸digo espagueti.
Github,