Jakie są różnice pre condition, Post condition i niezmienne w terminologii komputerowej [zamknięty]

Trudno powiedzieć, o co tu chodzi. To pytanie jest niejednoznaczne, niejasne, niekompletne, zbyt szerokie lub retoryczne i nie można racjonalnie odpowiedzieć w obecnej formie. Aby uzyskać pomoc w wyjaśnieniu tego pytania, aby można było je ponownie otworzyć, odwiedź Centrum pomocy . Zamknięte 8 lat temu .

Czytam książkę współbieżność Javy w praktyce i trochę się mylę z tymi pojęciami:

  1. Pre condition
  2. Post condition
  3. niezmienniki

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

Author: MarianD, 2012-07-04

1 answers

Będziesz miał wiele problemów z pisaniem Javy, zwłaszcza wielowątkowego kodu, jeśli nie zrozumiesz tych prostych pomysłów:

    Warunki wstępne to rzeczy, które muszą być prawdziwe, Zanim metoda zostanie wywołana. Metoda mówi klientom "tego oczekuję od Ciebie".
  1. Post-conditions to rzeczy, które muszą być prawdziwe po zakończeniu metody. Metoda mówi klientom "to jest to, co obiecuję zrobić dla Ciebie".
  2. Niezmiennikami są rzeczy, które zawsze są prawdziwe i nie zmieni się. Metoda mówi klientom "jeśli to była prawda, zanim zadzwoniłeś do mnie, obiecuję, że będzie to nadal prawda, gdy skończę".

Wszystkie one są częścią idei zwanej "programowanie przez kontrakt". Został wynaleziony przez gościa o imieniu C. A. R. Hoare . Bertrand Meyer zbudował wokół niego zorientowany obiektowo język o nazwie Eiffel . Nikt nie używa go zbyt często, ale miał dzień na słońcu z tego powodu.

Eiffel nie jest zbyt popularny. Jest ponad cztery miliony pytań na temat SO jak to piszę, ale tylko 32 z nich są oznaczone "eiffel".

Aktualizacja: było 11,966,392 pytanie na tak na 29-Jun-2016. Tylko 92 z nich zostało oznaczonych jako "eiffel". Odsetek pytań Eiffla pozostaje na stałym poziomie ~0,00077%.

Przyznaję się do błędu-dziękuję, flamingpenguin. Zaktualizowałem odpowiedź.

 58
Author: duffymo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-29 20:29:18