Si tan solo pudiera enseñarle una cosa a un desarrollador principiante
Hace unas semanas, tuve una idea interesante al escribir una publicación de blog sobre cómo abstraer su código para que sea más fácil de reutilizar. Quería saber qué piensan otros desarrolladores que es el principio más importante que le enseñarían a un desarrollador novato y por qué elegirían ese principio de diseño.
Así que hice algunas "entrevistas" diferentes, algunas en WeChat , algunas en Google Forms y el resto de un hilo de Google Chat internamente.

Principio de responsabilidad única
El resultado es súper emocionante. El principio 1 principal es el "Principio de responsabilidad única", o SRP para abreviar. Aunque hay otras interpretaciones, normalmente SRP significa que debe mantener su función, clase o módulo lo más simple y coherente posible.
Un ejemplo concreto de eso sería algo que ejercí del hilo de Google Chat:
… Les sugiero que den nombres significativos a sus funciones (se relaciona con el punto uno) y vean si tienen que usar conjunciones como y/o para definir lo que está haciendo la función. Si ese es el caso, deberían dividir esa función...
También se aplicó a diferentes niveles en su código. Por ejemplo, una clase no debería hacer dos cosas diferentes no relacionadas. Una clase de datos Person
puede tener name
, address
y dob
, pero el método deliver
sería demasiado.
Por ejemplo, a continuación hay un ejemplo que discutí en este artículo , un Avatar
componente incluye Tooltip
y lo mostrará cuando props.name
se proporcione. Al aplicar SRP, es posible que desee dividir el Tooltip
código relacionado con el consumidor y asegurarse de que Avatar
solo se preocupe por la lógica relacionada con el avatar.

Encapsulación
El segundo tema seleccionado más alto es la encapsulación. Ingenuamente, podría significar no usar datos o funciones dispersos, y deben encapsularse dentro de una clase más o menos. Pero más allá de eso, también puede significar que necesita saber qué datos y métodos deben colocarse en qué lugar.
Usaré el ejemplo de mi otro artículo aquí y mostraré cómo podemos usar class
para encapsular estos datos expuestos fácilmente.
Es común ver estas pequeñas funciones de transformación de datos junto con los componentes de React, y como la forma en que la interfaz consume estos cambios de datos (mapeando abbr al nombre completo o agregando lógica if-else cuando sea necesario), estas pequeñas funciones de nivel superior comenzaron a ser difíciles de mantener. .

Entonces podríamos tener una class
para todos los datos y funciones de transformación. Y tenemos un solo lugar para modificar si alguna lógica para esa transformación cambia. También es más fácil configurar las pruebas: define la entrada con algunas variaciones y verifica la salida de los métodos públicos de la clase.

No te repitas
El número tres en la lista es SECO: no te repitas. Todos odiamos repetir el trabajo al codificar, especialmente cuando tenemos que hacerlo manualmente. En términos generales, la regla de tres se aplica en la mayoría de los casos, lo que significa que solo puede aceptar menos de tres instancias de duplicación.
Una cosa a tener en cuenta aquí, al igual que otros principios en el desarrollo de software, es que primero debe buscar comprender el propósito detrás de la duplicación y luego demoler esa duplicación. Hay algunas lecturas interesantes (las puse en la sección de referencia en la parte inferior) casos en los que no debe eliminar la duplicación.
Encontré diferentes lenguajes de programación que proporcionan mecanismos que hacen que el SECO sea más fácil o más difícil. Por ejemplo, en los lenguajes de programación funcionales, puede pasarlos como variables porque las funciones son de primera clase, lo que es imposible en los lenguajes orientados a objetos puros.

Y luego puede pasar cualquier función para evitar duplicaciones, como:

Mientras esté en Java, por ejemplo (si es necesario actualizar mi conocimiento de Java, comente para informarme), primero debe crear una interfaz y pasar las clases que implementan la interfaz para que esto suceda, lo cual es bastante engorroso.
Resumen
Estos tres principios principales están arraigados en la mente de la mayoría de los desarrolladores, aunque hay algunas interpretaciones ligeramente diferentes de persona a persona.
SRP garantiza que solo se concentre en una cosa y la haga perfecta, y si se hace bien, la capacidad de prueba y composición son las siguientes. Si bien la encapsulación lo ayuda a colocar contenido, algoritmo, datos y lógica coherentes en un lugar central, también ayuda a facilitar la comprensión del código. Y por último, DRY mantiene el código siempre en un estado simple y conciso. Además, no tiene que preocuparse por olvidarse de actualizar los otros lugares al modificar.
Referencias:
- No te repitas
- Adiós código limpio
- La abstracción equivocada