Принцип СУХОГО (не повторяй себя) гласит, что «каждое знание должно иметь одно, однозначное, авторитетное представление в системе». В большинстве случаев это относится к коду, но часто оно распространяется и на документацию.
Говорят, что каждая программная система имеет архитектуру независимо от того, выбрали вы ее или нет. Другими словами, программное обеспечение, которое вы создаете, имеет структуру, и эта структура «как построено» является архитектурой программного обеспечения. Поскольку встроенная программная система поставляется с архитектурой, является ли описание архитектуры этой системы нарушением принципа СУХОЙ? В конце концов, если вам нужно знать архитектуру, вы всегда можете просто посмотреть на код ...
Ответы:
Дублирование ваших мыслей в код нарушает принцип СУХОГО?
Боже, если бы вы могли просто узнать архитектуру, изучая код, в первую очередь не было бы таких вещей, как «документы описания архитектуры». Это не повторение, это другой уровень описания системы , который не может быть тривиально выведен из кода, и наоборот. Так что он имеет полное право на существование, даже если вы принимаете DRY.
источник
Не принимайте СУХОЕ как жесткое и быстрое правило. Это хорошо, но вы можете только приблизиться к этому на практике.
Также я думаю, что это не очень хорошо написано. «Не повторяйся», по-видимому, не охватывает столь же важный случай, что для внесения семантического или функционального изменения вам придется редактировать исходный текст в нескольких местах, говоря разные, но скоординированные вещи.
Вместо того, чтобы воспринимать это как заповедь не нарушать, лучше понять, почему это хорошая идея, и сделать разумный выбор по этому поводу. Причина, по которой плохо вносить согласованные изменения в нескольких местах, состоит в том, что вы, редактор, допускаете ошибки. Вы не на 100% надежны, чтобы внести изменения без ошибок. Если вам нужно сделать 10 различных исходных текстовых изменений, и вы правильно сделаете только 9 из них, вы допустили ошибку . Вот почему организация исходного текста для минимизации количества согласованных изменений - это хорошо. Это минимизирует ошибки.
Мы не принадлежим к религии, в которой СУХОЙ является одной из заповедей. Это просто удобный, хотя и немного вводящий в заблуждение, способ заключить в себе какой-то здравый смысл.
источник
Описание архитектуры, или Software Design Описание делает нарушают DRY. Однако в большой организации, где проекты последних лет приходят и уходят разработчики, а система слишком велика для того, чтобы один человек мог держать все детали в голове, это критически важный документ. Количество «повторений», необходимое для синхронизации, полностью оправдывает усилия, которые оно экономит при следующем обновлении или обслуживании.
источник
Описание архитектуры не нарушает принцип DRY.
Ваша программная система поставляется с архитектурой, конечно. И это распределено по многим файлам, во многих классах, со многими посторонними и деталями, которые не нужны для обзора.
Ваш архитектурный документ должен быть похож на первый абзац новостного отчета: это набросок, краткое изложение, дорожная карта проекта.
источник
Если вы датируете документ, то он описывает архитектуру на момент написания.
Принимая во внимание, что код представляет архитектуру в настоящий момент.
Две разные вещи - не одно и то же знание.
Пока вы заявляете, что документ представляет собой архитектуру на момент написания, вы не дублируете знания IMO, потому что это разные знания, если речь идет о системе в другой момент времени.
источник