Лично я бы написал строку else
как:
} else /*if (person.IsFemale())*/ {
Это обходит необходимость запуска функции (я бы не хотел тратить время на ее запуск, если ее результаты не нужны), но оставляет важную документацию для будущих разработчиков. Теперь ясно, что эта ветвь условия охватывает случай IsFemale
(в частности), а не случай !IsMale
(в целом). По сути, вы делаете свои предположения «вслух», что снижает вероятность того, что будущие изменения неправильно поймут, что вы делаете, и нарушат ваш код.
В наших встроенных системах может быть сложно анализировать и отлаживать сбои, поэтому мы часто включаем «невозможные» операторы else
и заставляем их выплевывать сообщения об ошибках и генерировать исключения. Обычно это ограничивается разработкой, и когда код становится стабильным, он удаляется.