У книзі «Прагматичний програміст» письменники згадують програмування за концепцією збігу . Це пояснює, що це таке, чому це спричинено, які небезпеки ви можете зіткнутися, і це порівнюється з мінним полем у війні.
Ви коли-небудь переглядаєте старі чорно-білі фільми про війну? Втомлений солдат обережно виходить з-під щітки. Попереду - галявина: чи є міни, чи це безпечно перетинати? Немає ознак того, що це мінне поле - жодних знаків, колючого дроту чи кратерів. Солдат тикає землею перед собою своїм багнетом і морщиться, очікуючи вибуху. Немає жодної. Тож він деякий час кропітливо проходить по полю, підносячись і тикаючи, коли йде. Врешті-решт, переконавшись, що поле безпечне, він випрямляється і гордо крокує вперед, лише щоб його підірвати на шматки.
Початкові зонди солдата для мін нічого не виявили, але це було просто щастило. Його привели до помилкового висновку - з катастрофічними результатами.
Як розробники ми також працюємо на мінних полях. Є сотні пасток, які просто чекають, щоб наздогнати нас щодня. Пригадуючи казку солдата, нам слід насторожено робити помилкові висновки. Ми повинні уникати програмування за збігом обставин - покладаючись на удачу та випадкові успіхи - на користь програмування навмисно ...
Але я не дуже задоволений тим, як вони описують питання "як його подолати". Так, ви повинні подумати заздалегідь, перш ніж писати код, але як це практикувати? Єдине, про що я можу подумати - це додавання функцій до існуючих проектів з відкритим кодом, де ви маєте знати як про "що я зараз роблю", так і "як працюють інші фрагменти коду", і це не застосовується коли ви пишете власні проекти.
Редагувати:
резюме з ваших публікацій:
- Не вгадайте наступного свого кроку, доведіть, що він правильний
- Випробування блоку та рефактор максимально можливо, коли це необхідно
- Додайте функції – компілюйте – тестуйте часто
- Якщо ви не можете пояснити код noob, ви, ймовірно, програмуєте за збігом обставин.
До речі, відповідь важко прийняти, це дуже важко. Усі відповіді справді чудові :)