Wpis z mikrobloga

@Hauleth mogłem zrobić to na przykładzie jakiejś encji domenowej z kilkoma regułami, byłoby łatwiej i może bardziej oddawałoby prawdę, ale chciałem powiązać to z konstruktem interfejsu, bo (przynajmniej mi) tak na początku, przez długi czas się kojarzyło słowo kontrakt. Dlatego na koniec dorzuciłem zdanie o DbC przy projektowaniu zachowań modelu, żeby było wiadomo, że DbC nie dotyczy tylko interfejsu/klasy abstrakcyjnej i ma ogólne zastosowanie.
@trelixmorelix: DdC wyglada spoko z zewnątrz, ale niestety w świecie w jakim żyjemy mam wrażenie, że nie przyda się za często, bo jakoś słabo widzę zastosowanie tego w rozproszonym systemie. W jakichś językach do specyfikacji jak TLA+ to ma sens, ale w „faktycznym” kodzie widzę wiele rzeczy gdzie może się to wyłożyć, albo będzie trochę zbyt ogólne.
@Hauleth tak, biorę w poście poprawkę na to, zważając na niekiedy brak możliwości / trudności w sformułowaniu takich warunków. Post jest dość ogólny, nie zaszkodzi na pewno wiedzieć. :-) Martin Fowler napisał fajnie właśnie o owych trudnościach w jednym z artykułów ale coś nie mogę go znaleźć i chyba on stwierdził, że warto jednak myśleć w takich kategoriach kontraktowych i tu się można zgodzić :-)
@ZaoSan: DbC jest kolejnym z podejść wspomagającym Twoje oprogramowanie w byciu zgodnym z wymaganiami. Tzn., pomaga formułować i weryfikować wymagania według poznanych warunków wstępnych, końcowych i niezmienników. Jeśli udokumentujesz takie wymagania, masz większą gwarancję, że Twoja aplikacja będzie zachowywać się zgodnie z wymaganiami. Są też języki, które wspierają w pełni np.: adnotacje DbC, które pozwalają definiować i pilnować warunków i po np.: refaktoringu/jakiejś zmianie nie zostaną one złamane. Java/c# nie wspiera