2012-07-04 5 views
21

Czytam książkę Java Concurrency in Practice i coraz trochę mylić z tych warunków:Jakie są różnice stanu sprzed, stan post i niezmienne w terminologii komputerowej

  1. Pre stan
  2. warunek post
  3. Niezmienniki

Czy ktoś może mi wyjaśnić (na przykład, jeśli to możliwe)?

+0

z inklinacją, która pomoże Ci zadać bardziej właściwe pytania na temat SO, zadaj konkretne pytania, coś, co pokazuje własne badania/pracę nad tematem, dodając wartość do twojego pytania. Rzeczy, które można znaleźć omówione w ogóle w Internecie jako takie, nie stawiają dobrych pytań na temat SO. PS: sam nie przegrałem. – Bhaskar

+8

To trochę trudne ... – yshavit

+4

W jaki sposób pytanie jest niejednoznaczne? Chciał wyjaśnić, co oznaczają te terminy za pomocą przykładu kodu. I on pokazał badania, ponieważ czytał tę książkę. Czasami SO po prostu szlifuje moje narzędzia. Ugh. – Ungeheuer

Odpowiedz

41

Będziesz miał wiele problemów, zwłaszcza piszących kod Java wielowątkowych, jeśli nie można zrozumieć tych prostych pomysłów:

  1. Warunki wstępne są rzeczy, które muszą być spełnione, zanim metoda jest nazywany. Metoda mówi klientom "to jest to, czego oczekuję od ciebie".
  2. Warunki końcowe to rzeczy, które muszą być spełnione po zakończeniu metody. Metoda mówi klientom: "to, co obiecuję zrobić dla ciebie".
  3. Niezmienniki to rzeczy, które zawsze są prawdziwe i nie ulegną zmianie. Metoda mówi klientom "jeśli to prawda, zanim zadzwoniłeś do mnie, obiecuję, że nadal będzie prawdą, kiedy skończę".

Wszystkie są częścią pomysłu o nazwie "programowanie według umowy". Został wymyślony przez faceta o nazwie C.A.R. Hoare. Bertrand Meyer zbudował wokół niego obiektowy język o nazwie Eiffel. Nikt go nie używa, ale z powodu tego miał dzień na słońcu.

Eiffel nie jest zbyt popularny. Podczas pisania tego tekstu jest ponad 4 miliony pytań na temat SO, ale tylko 32 z nich jest oznaczone jako "eiffel".

Aktualizacja: W dniu 29 czerwca 2016 r. Zgłoszono 11 996 392 pytania dotyczące zgłoszenia SO. Tylko 92 z nich zostało oznaczonych jako "eiffel". Odsetek pytań z e-mailem pozostaje w przybliżeniu stały i wynosi ~ 0,00077%.

Stoję poprawiony - dziękuję, flamingpenguin. Zaktualizowałem swoją odpowiedź.

+1

http://en.wikipedia.org/wiki/Hoare_logic – lexicalscope

+0

Kiedy więc piszę metodę z pewnymi warunkami wstępnymi, czy sprawdziłbym, czy te warunki wstępne są spełnione, czy też zakładam, że klient jest wystarczająco inteligentny, aby nie naruszyć warunku wstępnego? – Ungeheuer

+0

Twój wybór, ale cała idea polega na sprawdzaniu i zapobieganiu błędom. Zapytaj siebie, jak konsumenci będą znać twoją umowę. – duffymo

Powiązane problemy