Возможно, это был сложный вопрос несколько лет назад, но сейчас ИМО уже не сложно устранить случайную сложность.
В какой-то момент Кент Бекс сказал о себе: «Я не отличный программист; я просто хороший программист с хорошими привычками».
IMO стоит подчеркнуть две вещи: он считает себя программистом , а не архитектором, и его внимание сосредоточено на привычках, а не на знаниях.
Способ решения сложных проблем Фейнманом - единственный способ сделать это. Описание не обязательно очень легко понять, поэтому я буду его разбирать. Голова Фейнмана была не просто полна знаний, она также была полна умения применять эти знания. Когда у вас есть знания и навыки для его использования, решить сложную проблему не сложно и не просто. Это единственный возможный результат.
Существует совершенно не магический способ написания чистого кода, который не содержит случайных сложностей, и он в основном похож на то, что делал Фейнман: приобретать все необходимые знания, тренироваться, чтобы привыкнуть применять его на практике, а не просто спрятать его в каком-то уголке своего мозга, затем напишите чистый код.
Теперь многие программисты даже не знают всех знаний, необходимых для написания чистого кода. Молодые программисты склонны отказываться от знаний об алгоритмах и структурах данных, а большинство старых программистов склонны забывать это Или большие обозначения O и анализ сложности. Старые программисты склонны отклонять шаблоны или запахи кода - или даже не знают, что они существуют. Большинство программистов любого поколения, даже если они знают о шаблонах, никогда не помнят точное, когда использовать и части драйверов. Немногие программисты любого поколения постоянно оценивают свой код на соответствие принципам SOLID. Многие программисты смешивают все возможные уровни абстракции повсюду. Пока я не знаю ни одного коллеги-программиста, который бы постоянно оценивал его код по отношению к запахам, описанным Фаулером в его книге по рефакторингу. Хотя в некоторых проектах используется какой-либо инструмент метрик, наиболее часто используемая метрика - это сложность того или иного типа, тогда как две другие метрики - связность и сплоченность - в значительной степени игнорируются, даже если они очень важны для чистого кода. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. наиболее используемая метрика - это сложность того или иного рода, в то время как две другие метрики - связность и сплоченность - в значительной степени игнорируются, даже если они очень важны для чистого кода. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. наиболее используемая метрика - это сложность того или иного рода, в то время как две другие метрики - связность и сплоченность - в значительной степени игнорируются, даже если они очень важны для чистого кода. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. в то время как две другие метрики - связь и сплоченность - в значительной степени игнорируются, даже если они очень важны для чистого кода. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. в то время как две другие метрики - связь и сплоченность - в значительной степени игнорируются, даже если они очень важны для чистого кода. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. Другим аспектом, который почти все игнорируют, является когнитивная нагрузка. Немногие программисты рассматривают юнит-тесты как документацию, и еще меньше знают, что трудно писать или называть юнит-тесты еще одной вонью кода, которая обычно указывает на плохой факторинг. Крошечное меньшинство знает о мантре управляемой доменом конструкции, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, поскольку несоответствия неизбежно создают проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. s мантра, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, так как расхождения неизбежно создадут проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас. s мантра, чтобы держать модель кода и модель бизнес-домена как можно ближе друг к другу, так как расхождения неизбежно создадут проблемы в будущем. Все это необходимо учитывать постоянно, если вы хотите, чтобы ваш код был чистым. И многое другое, что я не могу вспомнить прямо сейчас.
Вы хотите написать чистый код? Там нет магии требуется. Просто изучите все, что требуется, затем используйте его, чтобы оценить чистоту вашего кода, и рефакторинг, пока вы не будете счастливы. И продолжайте учиться - программное обеспечение - все еще молодая область, и новые знания и знания приобретаются в быстром темпе.