Я бы предпочел использовать if(!value)
, потому что, в зависимости от имен задействованных переменных, «истинный» случай имеет гораздо больше смысла в соответствии с английской семантикой.
Рассмотрим один из примеров в этой статье MSDN :
if(pane.IsChecked)
по-английски читается как «Если флажок установлен».
Однако, если (pane.IsChecked == true
) читается по-английски как «Если проверена ли панель на true». Это утверждение гораздо менее ясно на английском, чем должно быть.
Одной из причин, по которой мы не пишем код на C # в двоичном коде, является удобочитаемость. Если вам предоставляется выбор между кодом, который хорошо работает, когда вы читаете его, и кодом, который этого не делает, то стоит тот, который более читабелен. Я не думаю, что добавление «== true
» делает этот пример более читабельным, и MSDN тоже так не считает.
Конечно, это довольно маленький пример для беспокойства. Но, как указали некоторые другие ответы, непринятие такого подхода к более масштабным случаям может ухудшить читабельность.