Esto es muy difícil de explicar porque simple no significa lo mismo para todos.
Ejemplo. Algunos desarrolladores piensan que ?:
es simple, pero otros piensan que una declaración if
es mejor. Cuando se llega a este nivel, no puedes complacer a todos.
En general, medios simples sin complejidad . Para entender la simplicidad, necesitamos entender la complejidad.
Hay dos tipos de complejidad:
Complejidad esencial se refiere a una situación en la que todo es razonable
las soluciones a un problema deben ser complicadas (y posiblemente confusas)
Porque las soluciones "simples" no resolverían adecuadamente el problema.
- Wikipedia
La complejidad accidental es la complejidad que surge en los programas informáticos
o su proceso de desarrollo (programación informática) que es
No esencial para el problema a resolver.
- Wikipedia
Puede verificar la complejidad esencial con las siguientes preguntas:
¿Es esta solución simple? ¿Puedo explicárselo a mi compañero en un par de minutos y lo obtienen? ¿Hay una solución más simple al problema? En caso afirmativo, ¿hay alguna compensación entre la solución complicada y la solución simple? ¿Podemos vivir con esas compensaciones? Por ejemplo, muchos programadores cometen un error al micro optimizar todo y su solución (y el código también) se vuelve demasiado complicado.
Comprobando su complejidad accidental:
¿Es el código simple? Si vuelvo a utilizarlo dentro de tres meses, ¿cuánto tiempo me tomará construir el contexto en mi cerebro para poder hacer el cambio que necesito hacer? ¿Todo en mi código fuente tiene un propósito claro y transmite ese propósito de manera efectiva para mí y para otros desarrolladores ? ¿Qué tan difícil es probar mi código? Por lo general, cuanto más complicado es su código, más difícil es realizar una prueba unitaria, por lo que generalmente lo uso como una medida de complejidad. Usualmente quieres clases y métodos pequeños, bien nombrados y enfocados. Los patrones de diseño usualmente te ayudan a lograr estos también.
Si te encuentras con ganas de usar un patrón de diseño solo porque acabas de leerlo, es probable que se presente una complejidad accidental. Si te encuentras con ganas de poner algo porque piensas que 'es inteligente' probablemente introducirá una complejidad accidental.
Espero que esto ayude y no lo olvides: Simple no significa FÁCIL .