Если вам нужно было выбрать свои Избранные (умные) методы защитного кодирования, какими они были бы? Хотя мои текущие языки - Java и Objective-C (с фоном на С++), не стесняйтесь отвечать на любом языке. Акцент здесь будет сделан на умных оборонительных методах, отличных от тех, о которых здесь уже знают 70%+. Так что теперь пришло время углубиться в трюки.
Другими словами, попробуйте подумать об этом, кроме этого неинтересного примера:
-
if(5 == x)
вместоif(x == 5)
: во избежание непреднамеренного присваивания
Вот некоторые примеры некоторых интригующих лучших защитных методов программирования (примеры, специфичные для языка, на Java):
- заблокируйте свои переменные, пока не узнаете, что вам нужно их изменить
То есть вы можете объявить все переменные final
, пока не узнаете, что вам нужно будет изменить его, после чего вы можете удалить final
. Одним из общеизвестных фактов является то, что это также справедливо для параметров метода:
public void foo(final int arg) { /* Stuff Here */ }
- Когда что-то происходит плохо, оставьте след доказательств
Есть несколько вещей, которые вы можете сделать, когда у вас есть исключение: очевидно, что его можно будет записать и выполнить некоторую очистку. Но вы также можете оставить след доказательств (например, установить переменные для значений дозорных, таких как "UNABLE TO LOAD FILE" или 99999, будет полезно в отладчике, если вам удастся исключить исключение catch
-block).
- Когда дело доходит до согласованности: дьявол находится в деталях
Будьте в соответствии с другими библиотеками, которые вы используете. Например, в Java, если вы создаете метод, который извлекает диапазон значений, включите нижнюю границу включительно и исключающую верхнюю границу. Это сделает его совместимым с такими методами, как String.substring(start, end)
, который работает одинаково. Вы найдете все эти типы методов в Sun JDK, чтобы вести себя таким образом, поскольку он выполняет различные операции, включая итерацию элементов, совместимую с массивами, где индексы от нуля (включительно) до длины массива (исключение).
Итак, каковы ваши любимые защитные действия?
Обновление: если вы еще этого не сделали, не стесняйтесь звонить. Я даю шанс получить больше ответов, прежде чем я выберу официальный ответ.