Семантика (то есть смысл) функций или методов в программировании сильно влияют на легкость его чтения и даже наличие скрытых багов. Что это такое?
Представьте себе функцию, которая называется showResult(). Что она делает? Большинство разработчиков глядя на нее подумает, что эта функция печатает что-то на экран, так как в начале стоит слово “show”. При правильном проектировании, так и было бы, но проверяя проекты Хекслета я встречал такой код: const content = showResult(). Здесь я испытываю wtf, так как названия говорят об одном, а реальная инструкция о другом. Может эта функция одновременно возвращает результат и печатает его на экран? Возможно и такое. Из-за этого приходится дополнительно смотреть в код вокруг и вглубь, чтобы понять что же происходит.
Этот же подход важен и в обратную сторону, когда мы используем существующие методы и функции по назначению. Прекрасный пример это метод pop() у массивов в JS и других языках. По своему смыслу он работает с массивом как с очередью, удаляя и возвращая последний элемент в массиве. На практике же, его часто используют для того чтобы взять последний элемент: if (items.pop() === ‘some value’) … По смыслу этот код просто хочет проверить последний элемент (если это не так, то нужно разделять действия). Он иногда прокатывает, когда этот массив больше не используется дальше по коду. Но если предположить, что код может быть дописан, то программист с удивлением обнаружит что в массиве вдруг пропал элемент. Потом он конечно найдет эту строчку и поправит код на items.at(-1) (новый способ взять последний элемент в массиве).