Допустим, у меня есть функция DisplayWhiskers (), которая помещает некоторые косые черты и обратную косую черту на экран, чтобы представить усики животного, подобные этому: /// \\\.
Я мог бы написать комментарий для этой функции в соответствии с
// Represents an animal's whiskers by displaying three
// slashes followed by a space and three backslashes
Но если я затем добавлю функции DisplayKitten () и DisplaySealion (), которые в рамках своей работы вызывают DisplayWhiskers (), сколько подробностей об отображении усов должно быть в комментариях к этим другим функциям?
С одной стороны, мне кажется, что я должен иметь возможность просматривать комментарии для DisplayKitten () и понимать все, что мне нужно, о том, что он собирается делать, включая то, как именно он будет отображать усы. Я не должен был идти в другое место, чтобы прочитать комментарии для DisplayWhiskers (), чтобы выяснить это.
С другой стороны, если комментарии для DisplayKitten () явно ссылаются на три косых черты, за которыми следуют три обратные косые черты, это, кажется, идет вразрез с духом инкапсуляции и может стать ошибочным, если позже DisplayWhiskers () будет изменен.
Что считается лучшей практикой?
РЕДАКТИРОВАТЬ: Несколько ответов предположили, что решение заключается в чтении кода. Я понимаю принцип хорошего кода, который является его собственным лучшим комментарием, но для этого вопроса я имел в виду не комментарии внутри кода, а комментарии в заголовочных файлах, которые сопровождают прототипы функций. Давайте предположим, что реальный код предварительно скомпилирован и недоступен для клиента, который хочет использовать или вызвать его.