лучше сделать функцию маленькой в ​​javascript? - PullRequest
3 голосов
/ 16 марта 2010

Недавно я прочитал книгу ( CleanCode )

в этой книге

ФУНКЦИЯ ДОЛЖНА ДЕЛАТЬ ОДНО. OНИ ДОЛЖЕН СДЕЛАТЬ ЭТО ХОРОШО. ОНИ ДОЛЖНЫ СДЕЛАТЬ ЭТО ONLY.

и функция должна быть маленькой.

Но я думаю, что функция в JavaScript.

Если я делю большие функции на мелкие, код становится длиннее и требуется больше времени для рендеринга.

Лучше ли сделать функцию маленькой даже в javascript?

Каково ваше мнение

Ответы [ 7 ]

7 голосов
/ 16 марта 2010

Микро-оптимизации не стоят. Ремонтопригодность гораздо важнее. Для фактической передачи кода в браузер вы можете использовать JavaScript minifier .

4 голосов
/ 16 марта 2010

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

3 голосов
/ 16 марта 2010

Книга совершенно правильная.

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

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

И разница во времени рендеринга (или, скорее, времени загрузки) незначительна по сравнению с дополнительным обслуживаемостью вашего кода.

2 голосов
/ 16 марта 2010

Я не верю в мантру «функции должны быть маленькими, выполнять одно и только одно». Я думаю, что это было правдой в эпоху программирования на процедурном языке, и именно это вызвало у многих наркоманов проблемы. Зачем? Потому что в этих языках нельзя использовать встроенные или анонимные функции . Путь к читабельности в этих ранних процедурных языках был в коротких, хорошо названных функциях, потому что тогда вы могли бы сделать свой код более семантическим . Код был в целом более коротким в те дни, с меньшим количеством вспомогательных библиотек и компонентов. Время итерации в цикле сборки-отладки составляло несколько минут - сегодня, я думаю, многие сочли бы это неприемлемым.

В настоящее время основным врагом удобства обслуживания является невозможность расшифровать поток программы . Если вы не знаете, что или где кодировать, или откуда он исходит, или как называется то, что вы должны называть - у вас в руках кошмар в скором времени. Наличие (1) простого, незагрязненного пространства имен, которое легко думать о , и (2) наличие фрагмента кода, очень близкого к другому коду, на который это влияет, даст вам гораздо больше пробега в области обслуживания. чем «много маленьких одноцелевых функций» вещь.

1 голос
/ 16 марта 2010

Если я разделю большую функцию на маленькую вещи, ...

В нем не говорится «делай маленькие вещи», оно говорит «делай только одну вещь» и «выполняй маленькие функции».

Это не означает, что в одной строке, чтобы «хорошо сделать одно», это может быть легко 10-50 строк, и все же быть кратким и «одно».

1 голос
/ 16 марта 2010

Строка немного размыта в Javascript, так как functions удваивается как классы, объекты, конструкторы и замыкания.Ваша внешняя функция может быть огромной, но только потому, что она именует другие большие функции, которые действуют как объекты / конструкторы, которые содержат еще больше обратных вызовов, которые содержат замыкания.самодостаточный блок кода) должен быть как можно более строгим и справедливым в любом случае и на любом языке.

1 голос
/ 16 марта 2010

Если вы не пишете очень критичную по времени часть, обычно "легкость обслуживания" (что подразумевает небольшую функцию в вашем случае) гораздо важнее, чем размер кода.

Вы всегда должны начинать с написания небольших функций, а затем оптимизировать (объединяя или переписывая) те, которые вы считаете слишком медленными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...