Комментарии 15
Неплохой чек-лист из целых 2!!! пунктов.
+5
Из которых первый прямо следует из второго.
+1
Не следует. Можно соответствовать только второму, не соответствуя первому. Для этого нужно читать из глобального состояния, но не писать туда, тогда побочных эффектов не будет.
Пункты можно переформулировать так:
- Не читать из глобального состояния и любых внешних источников.
- Не писать в них.
+1
Признаю, был неправ. Спасибо.
Я действительно считал, что чтение из глобального состояния также является побочным эффектом.
Я действительно считал, что чтение из глобального состояния также является побочным эффектом.
0
Уточнение: «Не читать из глобального состояния и любых изменяемых внешних источников.»
0
Еще можно переформулировать как
1) Не зависит от других
2) Не влияет на других
Т.е. когда работаешь с этой функцией, имеешь некоторую уверенность, что изменения других людей в других частях кода не сломают ничего тебе, и ты не сломаешь ничего им. Отсюда чистый код имеет свойство порождать меньшее число регрессий.
1) Не зависит от других
2) Не влияет на других
Т.е. когда работаешь с этой функцией, имеешь некоторую уверенность, что изменения других людей в других частях кода не сломают ничего тебе, и ты не сломаешь ничего им. Отсюда чистый код имеет свойство порождать меньшее число регрессий.
0
Не нравится мне объяснение "нечистоты" на основе console.log
. Для практических применений разумнее считать вызов console.log
не нарушающим чистоту функции.
0
Объяснение мне тоже не слишком нравится. Но насколько я понимаю, никто вам про console.log в общем случае ничего не гарантирует, в том числе и то, что она ничего нигде не изменит. Из этого следует, что и второй, пессимистичный подход, тоже имеет право на существование.
0
НЛО прилетело и опубликовало эту надпись здесь
Инструменты диагностики, такие как console.log, не могут быть «вызваны не там». Как правило, любое место где они вызваны как раз и является тем местом где они должны быть вызваны.
0
Это разница между чистой функцией и чистоплюйской функцией.
Формально таки лог, не только консольный, нарушает чистоту функции, практически же этим можно пренебречь.
Если, конечно, stdout не является результатом работы программы, тогда нельзя пренебрегать.
Формально таки лог, не только консольный, нарушает чистоту функции, практически же этим можно пренебречь.
Если, конечно, stdout не является результатом работы программы, тогда нельзя пренебрегать.
0
Теперь при код ревью просьбы убрать сайд эффекты иначе как «изыди нечистая функция» выражать я не смогу.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Что такое чистые функции в JavaScript?