Hej, jak w temacie. Ciekaw jestem, czy korzysta się z tego w praktyce? Czy nie zaprzątać sobie tym głowy? Mało jest artykułów (PL) na ten temat, zupełnie jakby temat nie był popularny.
A o czym mowa?
kontrakty kodu (ale to dziwnie brzmi po polsku) sa po prostu walidacja i tak korzysta sie z walidacji,
Wyobraz sobie, ze nie masz dwoch zmiennych tylko 10 roznych zmiennych. Wtedy musisz stworzyc osobny byt do sprawdzania tych pol. I to jest wlasnie walidacja
to czy uzyjesz tam if czy Contract
to w sumie bez roznicy, bo Contract
jest cukrem skladniowym (jest tam taki sam if statement zapewne jakbys sam napisal)
Ladniej wyglada, ale jeszcze nie widzialem w zadnym projekcie by go ktos uzywal
W C# in Depth w drugiej wersji (2010) John Skeet widział w code contracts wielki potencjał, gdzie w wydaniu trzecim (2013) przyznał że code contracts się nie przyjęły i nie zyskały popularności. Osobiście widziałem jeden projekt który z nimi startował, ale kiedy mi przyszło w tym projekcie pracować cc były już wyłączone ;)
Sam "cukier składniowy" (w rzeczywistości nie widzę żadnego cukru tutaj, tylko metody biblioteczne) szału nie robi, ale prawdziwą wartość te kontrakty kodu to mają raczej w połączeniu ze statyczną analizą kodu, o ile ta nie daje zbyt dużo fałszywych alarmów oczywiście.
Checked exceptions z Javy też są formą kontraktu, ale jak wiadomo się nie przyjęły :) Z tym, że są bardziej upierdliwe, bo powodują błąd kompilacji, a nie tylko ostrzeżenia od narzędzia statycznej analizy kodu.
Raczej się nie korzysta. Kiedyś na meetupie rozmawiałem o tym z Ericiem Lippertem i Johnem Skeetem, i bodaj Eric opowiadał, że tę biblioteczkę zaczął praktykant, działało fajnie, więc wypuścili na świat, ale nikt nie planował poświęcać więcej czasu i umarło.
A to nie było tak, że to wymagało jakiejś dość wysokiej wersji Visual Studio do działania, więc nikt poza studentami nie miał szans tego używać?
Dokumentacja MS twierdzi, że "You must download and run the Code Contracts .msi file. It installs in any edition of Visual Studio other than the Express edition."
Dzięki za wypowiedzi, zostanę przy if
:) W C# W pigułce kontraktom kodu jest poświęcony spory kawałek rozdziału Diagnostyka i kontrakty kodu, w sieci ciężko było znaleźć cokolwiek na ten temat, więc zacząłem się zastanawiać, czy w ogóle ktoś z tego korzysta.