Ваши инстинкты кажутся правильными - это зависит от стоимости операций.
В вашем примере, делая текстовое поле видимым или невидимым, стоимость теста незаметна (просто отметьте немного в структуре окна), а стоимость присваивания также обычно незаметна (перекрасьте окно). Фактически, если вы установите «видимый» бит в его существующее значение, вы все равно будете нести стоимость вызова функции, но оконный менеджер проверит этот бит и немедленно вернется. В этом случае просто продолжайте и назначьте его.
Но в других случаях это может иметь значение. Например, если у вас есть кэшированная копия длинной строки или двоичного объекта, и каждый раз, когда вы назначаете новое значение, оно сохраняется в базе данных. Тогда вы можете обнаружить, что стоимость проверки на равенство каждый раз стоит того, чтобы сохранить ненужные записи в базу данных. Без сомнения, вы можете представить себе более дорогие сценарии.
Таким образом, в общем случае у вас есть по крайней мере следующие первичные переменные, которые необходимо учитывать: стоимость теста, стоимость назначения и относительные частоты назначения нового значения по сравнению с назначением того же значения.