Recuerdo llevarme muy bien con un equipo de trabajo en un proyecto con Laravel. En México solemos tener una cultura muy “picante (Pesada)” de hablar y de tratar al “compadrazgo (Amigos)”.
Un día común, me acerco a un compañero de trabajo y veo que empezaba a hacer alguna clase de código espagueti, por lo complejo de un requerimiento, por cierto demasiado complejo lo recuerdo, en ese momento yo exclamó:
“Mantenlo simple, idiota”
Se me quedó viendo de una manera sorprendida y como no, mientras yo intentaba explicarle que existe un concepto que dice literalmente eso, el equipo reía y reía, este mandamiento es el denominado KISS.
KISS “Keep It Simple, Stupid”
En realidad viene del inglés y como lo menciona, el objetivo es desarrollar lo más simple posible, esto para evitar complejidad innecesaria, por más complejo que sea un requerimiento, no significa que el código que escribimos tenga que serlo.
En la práctica esto es más sencillo a medida que lo entiendes, ir separando funcionalidades en problemas pequeños puede ser parte de una solución.
Cuántas veces no hemos visto un método que se llame así:
function changeUserDataAndSendMailAndNotifyWithSms() {
.....
}
Eso es mucho nombre para una función, pero no solo el nombre si no la lógica que lleva dentro, puede ser engorrosa, si separamos la lógica se mantiene simple.
function changeUserData() {
...
}
function sendMail() {
...
}
function notifyWithSms() {
...
}
Es una manera de mantener simples ciertas cosas, por supuesto que hay más, cómo no escribir un espagueti.
YAGNI “You aren’t gonna need it”
Otro mandamiento que me llama mucho la atención porque en algún punto recuerdo a un project manager que decía: “Vamos a crear estos campos en la tabla (inserte nombre de tabla aquí), porque puede que se utilicen algún día”. Justo es lo que este principio nos dice que no hagamos.
Esto nos incita a no poner cosas “solo por si acaso”, sin un fundamento realmente estudiado y analizado.
DRY “Don’t repeat yourself”
Este es otro principio que suelo aplicar muy bien, la regla es la siguiente:
“si algo usa el mismo código dos veces, en automático hay que refactorizar”
Mantener el mismo código en diferentes lugares es demasiado problemático, por ejemplo se podría hacer un método que cargue esa lógica de código repetido y hacer una caja negra.
Hay más mandamiento pero realmente considero que estos son la base de los demás y los que te recomiendo siempre prediques.