Каково золотое правило, когда нужно разбивать код на функции?

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

Каково золотое правило, когда нужно разбивать код на функции?

7 ответов

Решение

Это действительно зависит от размера и объема вашего проекта.

Я склонен делить вещи на функции каждый раз, когда что-то повторяется, и это повторение обобщается / абстрагируется, следуя золотому правилу СУХОЙ (не повторяйте себя).

Что касается разделения классов, я склонен следовать мантре "Объектно-ориентированное программирование", заключающейся в том, чтобы изолировать то же самое от того, что отличается, и разделять классы, если один класс реализует более одну большую теоретическую "идею" или сущность.

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

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

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

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

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

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

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

Сначала напишите функцию, которую вы добавляете. (Обратите внимание на слово «Во-первых», мы обычно пишем функцию/класс перед написанием функции, что может привести к слишком большой фрагментации).

Затем просмотрите код, который вы только что написали/изменили, найдите , какие блоки кода:

  • 3 строки и более, и ..
  • повторил и .. _
  • Могут быть сгруппированы под именованной функцией. Потому что код пишется нами, людьми (не программами), чтобы его потом читали/изменяли мы, люди (не программы).

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

Другие вопросы по тегам