Gdybyś miał wybrać swoje ulubione (sprytne) techniki kodowania obronnego, jakie by one były? Chociaż moje obecne języki to Java i Objective-C (z doświadczeniem w C ++), możesz odpowiedzieć w dowolnym języku. Nacisk zostałby położony na sprytne techniki defensywne inne niż te, o których wie ponad 70% z nas. Czas więc zagłębić się w swoją torbę sztuczek.
Innymi słowy, spróbuj pomyśleć o czymś innym niż ten nieciekawy przykład:
if(5 == x)
zamiastif(x == 5)
: aby uniknąć niezamierzonego przypisania
Oto kilka przykładów intrygujących najlepszych praktyk programowania obronnego (przykłady specyficzne dla języka znajdują się w Javie):
- Blokuj zmienne, dopóki nie będziesz wiedział, że musisz je zmienić
Oznacza to, że możesz zadeklarować wszystkie zmienne, final
dopóki nie będziesz wiedział, że będziesz musiał je zmienić, w którym to momencie możesz usunąć final
. Jednym z powszechnie nieznanych faktów jest to, że dotyczy to również parametrów metody:
public void foo(final int arg) { /* Stuff Here */ }
- Kiedy dzieje się coś złego, zostaw ślad za sobą
Istnieje wiele rzeczy, które możesz zrobić, gdy masz wyjątek: oczywiście zalogowanie się i wykonanie pewnych porządków to kilka. Ale możesz także zostawić ślad dowodu (np. Ustawienie zmiennych na wartości wartownicze, takie jak "UNABLE TO LOAD FILE" lub 99999, byłoby przydatne w debugerze, na wypadek gdybyś catch
przeleciał obok bloku wyjątków ).
- Jeśli chodzi o spójność: diabeł tkwi w szczegółach
Bądź tak spójny z innymi bibliotekami, których używasz. Na przykład w Javie, jeśli tworzysz metodę, która ekstrakty zakres wartości sprawiają, że dolna granica włącznie , a górna granica wykluczają . Dzięki temu będzie spójny z metodami, takimi jak ta, String.substring(start, end)
która działa w ten sam sposób. W Sun JDK znajdziesz wszystkie tego typu metody, które zachowują się w ten sposób, ponieważ wykonuje różne operacje, w tym iterację elementów zgodnych z tablicami, w których indeksy są od zera ( włącznie ) do długości tablicy ( wyłączne ).
Więc jakie są twoje ulubione praktyki obronne?
Aktualizacja: Jeśli jeszcze tego nie zrobiłeś, zadzwoń. Daję szansę na więcej odpowiedzi, zanim wybiorę oficjalną odpowiedź.