Структура кода: я должен использовать множество функций для повышения читабельности? - PullRequest
0 голосов
/ 06 января 2011

Мой вопрос имеет в виду скрипты Bash и PowerShell, но, полагаю, он применим и к другим языкам.

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

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

Сказав все это, вот мой вопрос:

Если у меня сложный скрипт, должен ли я переместить каждый раздел кода в свою собственную функцию, даже если каждая функция будет вызываться только один раз? Это значительно повысило бы читаемость скрипта, потому что его логика (функции) была бы в верхней части скрипта, а поток выполнения - в нижней части скрипта. Поскольку 50 строк кода будут представлены только одной строкой, было бы намного проще понять, что делает скрипт.

Другие люди делают это? Есть ли недостатки у этого подхода?

Ответы [ 7 ]

1 голос
/ 06 января 2011

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

getParams()

startTask()

doSomethingElse()

finishTask()

# implement functions below

, даже если реализации функций просты, он читается лучше.

1 голос
/ 06 января 2011

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

Так много разработчиков (рискну сказать, что лучшие в своем роде :-) создают небольшие функции / методы, такие какВы описываете, чтобы разделить их код на логически связные части.

0 голосов
/ 06 января 2011

Насколько мне известно, функция представляет собой последовательность шагов, которые становятся частью более крупной программы. Возвращаясь к вашему вопросу, я полностью согласен с тем, что функции улучшают читабельность и возможность повторного использования. Но в то же время разбивать каждую вещь на куски не может быть хорошей практикой. Наконец, я хочу сделать одно заявление: «Все, что в избытке, не выгодно!»

0 голосов
/ 06 января 2011

Сосредоточьтесь на том, чтобы иметь возможность читать и легко понимать ваш код.

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

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

0 голосов
/ 06 января 2011

Прочитайте эту книгу

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Вот некоторые цитаты из книги.

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

«ФУНКЦИИ ДОЛЖНЫ ДЕЛАТЬ ОДИН. ОНИ ДОЛЖНЫ СДЕЛАТЬ ЭТО ХОРОШО. ЧТО СЛЕДУЕТ СДЕЛАТЬ ЭТО ТОЛЬКО».

0 голосов
/ 06 января 2011

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

Что ж, я понимаю, что функциядискретная сущность, которая выполняет определенную, четко определенную задачу.

Имея это в виду, если вы обнаружите, что ваш скрипт вызывает данную функцию, по крайней мере, ОДИН РАЗ, то он выполняет свою работу.

0 голосов
/ 06 января 2011

Функция выполняет четко определенную задачу. Если у вас есть мега-функция, которая выполняет 5 разных функций, настоятельно рекомендуется вызывать 5 меньших функций.

...