Очевидно, что некоторые программисты стремятся показать, насколько они умны, создавая чрезвычайно сложный код, который никто не может понять. Другие программисты работают на таком высоком уровне, что усложнение решений - это естественная эволюция.
Одним из худших кодов, которые я когда-либо видел, был метод, содержащий более 2000 строк кода. Без сомнения, этот код был сложным, но он также был очень плохим.
Я думаю, что хороший программист избегает слишком сложного кода. Это включает в себя избежание соблазна заставить шаблон проектирования соответствовать решению, которое в действительности не требуется. Это также включает в себя избегание объектов Бога, магических кнопок, преждевременную оптимизацию, преждевременное обобщение и другие анти-паттерны.
Я постоянно занимаюсь рефакторингом и ищу возможности упростить свои решения, потому что рост сложности - это органическая вещь. Как и многие другие органические вещи, он должен быть обрезан и обрезан, если мы хотим, чтобы он продолжал использоваться. Я ненавижу взаимодействовать с чрезмерно сложными решениями, потому что с увеличением сложности увеличивается вероятность взлома кода.
Я думаю, что читаемость является наиболее важным элементом обслуживания кода, а слишком сложные решения почти всегда снижают читаемость и увеличивают затраты на обслуживание.