Sprawdzanie poprawności parametrów

0

Cześć,

czytam sobie książkę java effective programming i natknąłem się na taki fragment, że nawet w prywatnych metodach powinno się sprawdzać poprawność parametrów korzystając z asercji. Przykład z książki:

private static void sort(long a[], int offset, int length) {
  assert a != null;
  assert offset >= 0 && offset <= a.length;
  assert length >= 0 && length <= a.length - offset;
  ...  // wykonywanie obliczen
}

I tutaj nachodzi mnie pytanie - jak często sami stosujecie taką konwencję? Czy nie zrobi to ogromnego narzutu kodu? Jak to "połączyć" z praktykami z książki Clean Code w której mowa o rozbijaniu dużych metod na mniejsze, prywatne metody. Czy finalnie nie skończy się tak, że spora liczba metod n-parametrowych będzie miała n+k linijek z czego tylko k linijek, które rzeczywiście robią daną operację?

0

JVM sam w sobie robi sporo różnych asercji (zakres tablic, etc...), owszem jest to narzut, ale narzut w dobrym celu (zresztą, jak go dobrze Zaplanujesz to będzie niewielki). Także umożliwia to łątwiejsze utrzymywanie, debugowanie, kodu i jego dłuższe trwanie. Natomist, rzeczywiście, jeśli performance jest kluczowy, to można sobie darować (może?).

0

Ja czasami stosuje taką konwenkcje tylko bez słowa assert tylko sprawdzam warunki i jak coś jest nie tak to wyrzucam IllegalArgumentException() :)

0

Asercje, z racji tego że są domyślnie wyłączone (np domyślnie assert 2 + 2 == 5; nie rzuca błędem) oraz że rzucają AssertionError, który nie dziedziczy po Exception (a więc często nie będzie łapany), powinny być używane do wewnętrznych testów przez autora klasy, a nie do raportowania o błędach użytkownikowi klasy.

0

Nigdzie do teraz nie widziałem tego typu sprawdzania parametrów. Jak już to jakieś checkParameters(costam,"widomosc") z bodajże guavy

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0