Skip to content

Instantly share code, notes, and snippets.

@kaineer
Last active December 28, 2019 17:44
Show Gist options
  • Save kaineer/2223779 to your computer and use it in GitHub Desktop.
Save kaineer/2223779 to your computer and use it in GitHub Desktop.
8 правил защитного (?) программирования

https://github.com/mwilliams/lcthw-book/blob/master/learn-c-the-hard-waych28.txt

Never Trust Input

Never trust the data you are given and always validate it.

Prevent Errors

If an error is possible, no matter how probable, try to prevent it.

Fail Early And Openly

Fail early, cleanly, and openly, stating what happened, where and how to fix it.

Document Assumptions

Clearly state the pre-conditions, post-conditions, and invariants.

Prevention Over Documentation

Do not do with documentation, that which can be done with code or avoided completely.

Automate Everything

Automate everything, especially testing.

Simplify And Clarify

Always simplify the code to the smallest, cleanest form that works without sacrificing safety.

Question Authority

Do not blindly follow or reject rules.

Не полагайся на входные данные

Никогда не полагайся на правильность входных данных, всегда проверяй их на правильность.

Предупреждай ошибки

Если ошибка возможна, пусть даже и маловероятна, старайся её предупредить.

Сообщай о случившихся ошибках

Сообщай о случившихся ошибках сразу же по мере их появления, точно указывая где и почему они случились и как их исправить.

Документируй предположения

Описывай понятным языком предусловия, постусловия и то, что должно остаться неизменным.

Лучше предупредить, чем задокументировать

Не документируй дефекты, если их проще устранить.

Автоматизируй

Автоматизируй всё подряд, особенно тестирование.

Проще и яснее

Всегда делай код как можно более кратким и понятным. При этом код должен работать и, несмотря на упрощения, быть безопасным.

Не бойся задавать вопросы

Не стоит слепо следовать правилам или отвергать их, не поняв, зачем они были нужны.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment