Предыдущие исследования показали, что включение отрицательных слов, таких как «не», в середину предложения, может сбить нас с толку и усложнить понимание.



Как программист, я заметил, что исключение отрицательных операторов в коде приводит к более продуктивной базе кода. В своих обзорах кода я призывал свои команды писать в позитивном ключе, чтобы их было легче понять и с ними работать. Это может идти вразрез с естественной тенденцией написания, но окупается, особенно по мере роста кодовой базы. Написание позитивного кода дает много преимуществ. В этой статье я объясняю, почему мы должны стараться по возможности избегать негативного кода.

Человеческий разум изо всех сил пытается понять негативные слова в высказываниях.

Отрицательные слова требуют больше мыслительного процесса. Мы можем думать о мыслях как о стрелах, у которых есть направление. Отрицания перевернут логику мысли.

Не кормить животных

Известным знаком в зоопарках или парках может быть «Не кормите животных». Многие знаки должны подчеркивать слово «нельзя», чтобы помочь люди помнят эту часть утверждения. Вы заметили, что они редко используют составной глагол + отрицание «Не делайте», например «Не кормите животных»? Выделив отрицательную часть, легче подчеркнуть. В любом случае разум должен перевернуть мысль.

Более простой способ понять может быть

Избегайте кормления животных

Знак остановки - отличный пример

Стоп передает простую и понятную идею. Стоп. Что, если этот знак будет переписан на «Не уходи»? Это как бы отбрасывает отрицательную часть.

Хороший

"Стоп"

Плохой

«Не иди»

Позитивные утверждения легче понять

Выровняйте логику в утверждении, чтобы его было легче читать. По возможности избегайте отрицаний, поскольку это переворачивает логику. Человеческий разум должен больше работать, чтобы понять логику переворота.

Положительная мысль:

  • легче читать
  • легче рецензировать
  • подталкивает писателя к улучшению восприятия читателя

Например, сравните следующие два утверждения:

Хороший

«Если я получу деньги, я заплачу вам». (OK)

Плохой

«Если я не получу денег, я не заплачу тебе» (так… ты платишь мне или нет ??)

Первое утверждение легче понять. Простота требует меньше мыслительной способности. Преимущество - более быстрое общение и меньше недоразумений.

Отрицательный код сложно понять

В языках программирования, как и в математике, есть логические операторы. Многие из самых популярных языков программирования используют == для равенства и != для отрицания. В математике это будет = и ≠.

В следующем примере кода мы хотим написать алгоритм. Программа заглянет в продуктовый магазин. Инструкция - покупать бананы, если они есть в наличии. В противном случае поищите в другом магазине.

Хороший

if (bananasQuantityAvailable == 0) {
  goToAnotherStore()
} else {
  buy(bananas)
}

Плохой

if (bananasQuantityAvailable != 0) {
  buy(bananas)
} else {
  goToAnotherStore()
}

Пример с троичными выражениями

Хороший

var itemState = itemsCount == 0 ? "Empty" : "Available"

Плохой

var itemState = itemsCount != 0 ? "Available" : "Empty"

Легче испортить, когда складывается отрицательный код

Вы можете подумать, что при написании кода проще просто вставить отрицательный оператор. Вскоре это становится привычкой, и вы внезапно начинаете писать отрицательные операторы повсюду. Это может привести к очень запутанному беспорядку.

Допустим, мы хотим написать программу, которая распознает автомобиль Tesla.

В этом примере я буду использовать логические операторы && для И и || для ИЛИ.

Хорошо

if (isCar && isElectric && isFast && isAwesome) {
  isTesla = true
else {
  isTesla = false
}

Переводит на:

Это Tesla, если это быстрый и потрясающий электромобиль.

Плохой

if (!isCar || !isElectric || !isFast || !isAwesome) {
  isTesla = false
else {
  isTesla = true
}

Переводит на:

Это не Tesla, если это не электромобиль, и он не быстрый и не крутой.

Наш язык может быть виноват

Лера Бододицки представила в своем TedTalk, что языки формируют наш образ мышления.

Один из ее примеров - о том, как люди будут описывать мосты. И в испанском, и в немецком языках существительные относятся к родам. По-испански мост будет мужского рода «el puente». Немецкий язык также присваивает существительным роды, в результате чего «die Brücke» женский род. Следовательно, испаноязычные люди часто будут ссылаться на мосты с помощью стереотипных мужских прилагательных, таких как «сильный» и «длинный», в то время как немцы могут описывать мосты с женскими стереотипами, такими как «красивый» и «элегантный».

Отрицательные слова являются частью большинства языков. Фразы также имеют их встроенные. «Если они у нас есть, почему не использовать их?». Мы привыкли добавлять отрицания в наши предложения, как мы привыкли включать их в свои мысли. Тогда кажется очевидным, что мы будем использовать в нашем коде отрицательные операторы.

Когда использовать отрицательные операторы?

Бывают случаи, когда имеет смысл использовать отрицательный оператор. Такой случай будет, когда отрицание все еще будет легко читать, нужно только иметь дело с отрицательным случаем, и для выражения потребуется меньше кода.

Заключительные мысли

Каждый раз, когда я исправляю логическое утверждение, я становлюсь свидетелем силы положительного кода. Упрощение кодовой базы - отличный опыт разработчиков, который может принести пользу всей команде. Его легче просматривать и поддерживать. С другой стороны, давайте не будем принимать этот принцип как догму. Отрицания - это инструмент, который мы можем использовать всякий раз, когда они имеют смысл.

Спасибо, что прочитали, и дайте мне знать, если у вас есть какие-либо комментарии по поводу этого принципа.

Вы можете подписаться на меня там, поскольку я продолжаю открывать для себя новые идеи.