Проблема в том, что обычно спрашивают именно цвет (цвет
какое мнение) волос (волосы
мнение), подразумевая именно, что они есть (волосы
мнение). Грубо говоря, если у Вас в Вашей переменной мнение валяется "NULL" -- это никого не волнует. Спрашивающие его оттуда все равно считают. Так что лучше его заместить чем-то более безопасным, наверное...
Ну, тогда им надо просто сказать, что их пресуппозиция (о том, что мнение есть) неверна. Такие вопросы попадаются нередко, и если люди не умеют с ними обращаться и не поймут ответ — ну, плохо, но с моей стороны это меньшее из зол, если оно чем-нибудь не осложнено.
(А CS-ным образом я бы трактовал эту ситуацию чуть иначе: не как пару значений (есть-ли-мнение, само-мнение-или-любой-бред-если-его-нет), а как значение типа-суммы, значения которого — или мнение, или показатель его отсутствия. (Это и с точки зрения CS более разумно, когда язык такие типы поддерживает.) И если у переменной второе значение, а не одно из первых, никто физически не сможет вычитать оттуда какое-то мнение — его там просто нет.
UPD: Nullable-мнение — это то же самое, но не все языки позволяют нормально с этим работать: обычно значения типов-классов всегда включают
null, что не всегда полезно. Или, например, в .net вы не можете написать
T? для типа-параметра
T, если не известно, что это value type — часто неудобное ограничение, хотя у него и есть причины. Ceylon в этой ситуации ведёт себя хорошо (и когда там появятся value types, будет by design вести себя так же хорошо, а если не выйдет, они, скорее всего, тогда там не появятся), хотя в нём нет конструкции для сумм типов, а вместо этого там объединения.)