[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