[nem-pl] Asercje

"Paweł W. Olszta" pawel.olszta at adv.pl
Thu Jun 24 10:45:20 CEST 2004


Kamil Skalski wrote:

> Więc jest kilka opcji:
> - devel: podczas normalnej pracy nad projektem: asercje włączone, warunki 
> włączone, invarianty włączone, wszystko to bez żadnych opcji
> - release1: asercje i warunki zostają, invarianty wywalane (opcja 
> --no-invariants)
> - release2: zostają tylko warunki (--no-invariants --no-assertions)
> - release3: wszystko wywalane (--no-invariants --no-assertions) - to zależy co 
> rozumiemy przez --no-assertions

Tak, to ma sens, ale zostańmy przy takim nazewnictwie, jak w autoconf, 
czyli:

  --disable-invariant-checks
  --disable-assertion-checks
  --disable-internal-contract-checks
  --disable-contract-checks

Pierwsze wyłącza sprawdzanie inwariantów, drugie klauzul assert (), 
trzecie requires i ensures dla metod niepublicznych, czwarte requires i 
ensures w ogóle.

Istotne jest odróżnienie trzeciej i czwartej opcji -- requires i ensures 
nie służą do debugowania, to jest część programu. Dobrym wymogiem 
projektowania np. bibliotek jest sprawdzanie poprawności parametrów na 
wejściu metod publicznych.

-- 
"Any sufficiently complicated C or Fortran program contains
an ad hoc informally-specified bug-ridden slow implementation
of half of Common Lisp." -- Philip Greenspun




More information about the devel-pl mailing list