TGViewer
Defront — про фронтенд-разработку и не только Defront — про фронтенд-разработку и не только @defront · 5.03K subscribers
Post #34 508
В статье, про которую я писал вчера, Аксель говорит о том, что он не фанат опционального чейнинга (`obj?.prop` - пропозал в будущий стандарт JS) и даёт ссылку на статью "Overly defensive programming" Карла Витулло, которая раскрывает идею того, почему чрезмерные проверки по всему коду это не очень хорошая практика.

Если мы пишем в коде слишком много защитных проверок (например, `const p = obj && obj.p;`) и подавляем возможные ошибки, то это может служить признаком того, что мы не знаем, какие гарантии предоставляют используемые сервисы и сторонние библиотеки. В итоге это может приводить к непонятным ошибкам. Лучше всего заблоговременно разобраться в данных и кинуть ошибку как можно ближе к тому месту, где она произошла, не забыв залогировать. В статье есть хороший пример. Какое сообщение вам будет понятнее: Warning: Failed prop type: The prop 'a' is marked as required in 'Thing', but its value is 'undefined'. или Uncaught TypeError: Cannot read property 'b' of undefined? Кажется, что ответ очевиден. Как альтернативу проверкам можно использовать статическую типизацию, которая просто не даст коду собраться, если какие-то контракты были нарушены.

Чрезмерные проверки - это как прикрывание дыр в стене с помощью картин. На первый взгляд может казаться, что всё в порядке, но на самом деле дыры остаются на своём месте точно также как и баги в программе.

#programming #softwaredesign #musings

https://medium.com/@vcarl/overly-defensive-programming-e7a1b3d234c2
Medium Overly defensive programming (Also republished on my personal blog)
More from @defront
  1. Jan 7, 2024Channel name was changed to «Defront — про фронтенд-разработку и не только»
  2. Feb 24, 2022Про войну в Украине Шлю лучи поддержки братьям и сёстрам украинцам. В моём окружении нет н…
  3. Feb 23, 2022Qwik — возобновляемый JavaScript-фреймворк Райан Карниато поделился своими мыслями после р…
  4. Feb 22, 2022Обработка ошибок с помощью reportError Стэфан Джудис рассказал про малоизвестный метод для…
  5. Feb 21, 2022Выбор библиотеки по её размеру Владимир Клепов рассказал про подводные камни выбора библио…
  6. Feb 10, 2022Time-travel debugging в Svelte Сэм Ван Тассел рассказал про DeLorian — новый инструмент дл…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →