Если вам нужно было выбрать свои Избранные (умные) методы защитного кодирования, какими они были бы? Хотя мои текущие языки - 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, чтобы вести себя таким образом, поскольку он выполняет различные операции, включая итерацию элементов, совместимую с массивами, где индексы от нуля (включительно) до длины массива (исключение).
Итак, каковы ваши любимые защитные действия?
Обновление: если вы еще этого не сделали, не стесняйтесь звонить. Я даю шанс получить больше ответов, прежде чем я выберу официальный ответ.