Кто-нибудь из вас документировал функцию или метод с предварительными и последующими условиями? (Я спрашиваю, потому что мой учитель говорит, что это официальный / правильный способ сделать это):
Легенда: (потому что я не мог набрать специальные символы)
3 - читать как «существует» и существовать
E - является членом (как в наборе)
A - для всех
-> - подразумевает
Предположим, что s непустая строка. Пусть B (s) будет множеством целых чисел, которые дают индексы позиций в строке s.
Вот начинается документация этой функции:
int FirstOccurence(String s, Char c)
precondition:
(s.lenght() > 0) && 3 int i in B(s) [s.charAt(i) == c]
это предварительное условие для постусловия;)
postcondition:
(FirstOccurence(s,c) E B(s)) && (s.charAt(FirstOccurence(s,c)) == c) &&
A int i B(s)[(i < FirstOccurence(s,c)) --> !(s.charAt(i) == c) ]
Кто-нибудь из вас когда-либо сталкивался с таким способом документирования функций / методов в реальном мире?