Це, можливо, було важким питанням кілька років тому, але ІМО вже не важко усунути випадкові складності.
Що Кент Бексейд про себе, в якийсь момент: "Я не чудовий програміст; я просто хороший програміст з великими звичками".
Варто виділити дві речі, ІМО: він вважає себе програмістом , а не архітектором, а його увага зосереджена на звичках, а не знаннях.
Спосіб вирішення важких проблем Фейнмана - єдиний спосіб зробити це. Опис не обов’язково дуже простий для розуміння, тому я його розсічу. Голова Фейнмана була не просто сповнена знань, вона також була повна майстерності застосовувати ці знання. Коли у вас є як знання, так і вміння ними користуватися, вирішення важкої проблеми не є ні важким, ні простим. Це єдиний можливий результат.
Існує абсолютно не магічний спосіб написання чистого коду, який не містить випадкових складностей, і він здебільшого схожий на те, що робив Фейнман: здобути всі необхідні знання, навчитися звикнути до роботи, а не просто приховувати його в якомусь кутку вашого мозку, а потім напишіть чистий код.
Зараз багато програмістів навіть не знають про всі знання, необхідні для написання чистого коду. Молодші програмісти, як правило, відкидають знання про алгоритми та структури даних, а більшість старших програмістів, як правило, це забувають. Або аналіз великих записів і складності. Старі програмісти, як правило, відкидають шаблони або запахи коду - або навіть не знають, що вони існують. Більшість програмістів будь-якого покоління, навіть якщо вони знають про шаблони, ніколи не пам’ятають точного, коли використовувати та запчастини драйверів. Мало хто з програмістів будь-якого покоління постійно оцінює свій код відповідно до принципів SOLID. Багато програмістів повсюдно змішують усі можливі рівні абстракції. Наразі мені не відомо, що один із програмістів, який постійно оцінює його код, проти смутків, описаних Фаулером у своїй книзі про рефакторинг. Хоча деякі проекти використовують певний інструмент метрики, найбільш використовуваною метрикою є складність, того чи іншого роду, тоді як дві інші метрики - з'єднання та згуртованість - значною мірою ігноруються, навіть якщо вони дуже важливі для чистого коду. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. найбільш використовуваною метрикою є складність, того чи іншого роду, тоді як дві інші метрики - з'єднання та згуртованість - значною мірою ігноруються, навіть якщо вони дуже важливі для чистого коду. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. найбільш використовуваною метрикою є складність, того чи іншого роду, тоді як дві інші метрики - з'єднання та згуртованість - значною мірою ігноруються, навіть якщо вони дуже важливі для чистого коду. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. тоді як дві інші показники - з'єднання та згуртованість - значною мірою ігноруються, навіть якщо вони дуже важливі для чистого коду. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. тоді як дві інші показники - з'єднання та згуртованість - значною мірою ігноруються, навіть якщо вони дуже важливі для чистого коду. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. Ще один аспект, який майже всі ігнорують - когнітивне навантаження. Мало хто з програмістів розглядає одиничні тести як документацію, а ще менше хтось усвідомлює, що складно написати або назвати одиничні тести - це ще один сморід коду, який зазвичай вказує на поганий факторинг. Крихітна меншина знає про мантру дизайну, керованого доменом, щоб максимально наблизити кодову модель та модель ділового домену, оскільки розбіжності повинні створювати проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. s мантра підтримувати модель коду та модель ділової галузі якомога ближче одна до одної, оскільки невідповідності обов'язково створюють проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати. s мантра підтримувати модель коду та модель ділової галузі якомога ближче одна до одної, оскільки невідповідності обов'язково створюють проблеми в дорозі. Все це потрібно постійно враховувати, якщо ви хочете, щоб ваш код був чистим. І багато іншого, чого я зараз не можу згадати.
Ви хочете написати чистий код? Ніякої магії не потрібно. Просто вивчіть все необхідне, а потім використовуйте його для оцінки чистоти вашого коду та рефактор, поки ви не радієте. І продовжуйте вчитися - програмне забезпечення все ще є молодим напрямком, і нові розуміння та знання набуваються швидкими темпами.