Согласно L aws
!A && !B == !(A || B)
!A || !B == !(A && B)
Де Моргана * Итак, подход Льва Табуса верен, но я думаю, что преобразование выражения добавляет сложности к коду. И отрицание всего выражения с двумя отрицаниями в выражении затрудняет понимание того, каким будет результат. Лично я предпочитаю выражения типа
if foo == false {}
, потому что оно больше похоже на предложение по сравнению с
if !foo {}
, которое, однако, короче.
В конце я нахожу
if self.showFavoritesOnly == false || landmark.isFavorite {}
гораздо более интуитивно понятнее и проще для понимания, особенно при попытке найти ошибку после полуночи и 10-часового рабочего дня.