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 ifdeclaración es mejor. Cuando está por debajo de 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:
La complejidad esencial se refiere a una situación en la que todas las soluciones razonables 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 no es 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 mis compañeros en un lapso de unos minutos y lo recibirán? ¿Existe una solución más simple para el problema? En caso afirmativo, ¿hay compensaciones entre la solución complicada y la simple? ¿Podemos vivir con esas compensaciones? Por ejemplo, muchos programadores cometen un error al optimizar micro todo y su solución (y el código también) se vuelve demasiado complicada.
Comprobando su complejidad accidental:
¿El código es simple? Si vuelvo a hacerlo en 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 lo transmite efectivamente a mí y a 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 hacer una prueba unitaria, por lo que generalmente lo uso como una medida de complejidad. Por lo general, desea clases y métodos pequeños, bien nombrados y enfocados. Los patrones de diseño generalmente también te ayudan a lograrlos.
Si te encuentras con ganas de usar un patrón de diseño solo porque acabas de leerlo, probablemente introducirá 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 .