Если бы вам пришлось выбирать свои любимые (умные) методы для защитного кодирования, какими бы они были? Хотя мои текущие языки - Java и Objective-C (с опытом работы в 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
пропустите исключение -блок).
- Когда дело доходит до последовательности: дьявол кроется в деталях
Будьте максимально совместимы с другими библиотеками, которые вы используете. Например, в Java, если вы создаете метод, который извлекает диапазон значений, сделайте нижнюю границу включающей и верхнюю границу исключающей . Это сделает его совместимым с такими методами, String.substring(start, end)
которые работают таким же образом. Вы найдете все эти типы методов в Sun JDK, которые ведут себя таким образом, так как он выполняет различные операции, включая итерацию элементов в соответствии с массивами, где индексы от нуля ( включительно ) до длины массива ( исключая ).
Каковы ваши любимые защитные практики?
Обновление: если вы еще этого не сделали, не стесняйтесь, присоединяйтесь. Я даю шанс получить больше ответов, прежде чем я выберу официальный ответ.