Pull to refresh

Comments 15

Неплохой чек-лист из целых 2!!! пунктов.

Из которых первый прямо следует из второго.

Не следует. Можно соответствовать только второму, не соответствуя первому. Для этого нужно читать из глобального состояния, но не писать туда, тогда побочных эффектов не будет.


Пункты можно переформулировать так:


  1. Не читать из глобального состояния и любых внешних источников.
  2. Не писать в них.
Признаю, был неправ. Спасибо.
Я действительно считал, что чтение из глобального состояния также является побочным эффектом.
Уточнение: «Не читать из глобального состояния и любых изменяемых внешних источников.»
Еще можно переформулировать как
1) Не зависит от других
2) Не влияет на других

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

Не нравится мне объяснение "нечистоты" на основе console.log. Для практических применений разумнее считать вызов console.log не нарушающим чистоту функции.

Объяснение мне тоже не слишком нравится. Но насколько я понимаю, никто вам про console.log в общем случае ничего не гарантирует, в том числе и то, что она ничего нигде не изменит. Из этого следует, что и второй, пессимистичный подход, тоже имеет право на существование.
UFO just landed and posted this here
Инструменты диагностики, такие как console.log, не могут быть «вызваны не там». Как правило, любое место где они вызваны как раз и является тем местом где они должны быть вызваны.
UFO just landed and posted this here

В контексте JS.


Ленивость, кстати, ничего особо не меняет — просто средства диагностики должны её учитывать. Куда хуже в случае наличия в трансляторе оптимизаций, учитывающих чистоту.

UFO just landed and posted this here
Это разница между чистой функцией и чистоплюйской функцией.
Формально таки лог, не только консольный, нарушает чистоту функции, практически же этим можно пренебречь.

Если, конечно, stdout не является результатом работы программы, тогда нельзя пренебрегать.
Теперь при код ревью просьбы убрать сайд эффекты иначе как «изыди нечистая функция» выражать я не смогу.
Sign up to leave a comment.

Articles