Акт разделения функций называется как? - PullRequest
2 голосов
/ 31 мая 2011

Обычно я реализую классы (C #, C ++) с помощью многих частных функций, которые не служат никакой цели, кроме разделения задач и логики для удобочитаемости, удобства обслуживания и области действия.Например, если я вижу функцию длиной 100 строк и содержащую 3 комментария, разделяющих ее на виртуальные фрагменты 1/3 раздела, для меня это 3 функции.Поэтому я разбил эту большую функцию на 3 меньших, и теперь эта оригинальная функция вызывает только 3 функции.

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

Спасибо завперед.

Ответы [ 5 ]

1 голос
/ 20 октября 2011

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

Пример

Оригинальный код

void printOwing() {
    printBanner();

    //print details
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + getOutstanding());
}

После выполнения метода извлечения

void printOwing() {
    printBanner();
    printDetails(getOutstanding());
}

void printDetails (double outstanding) {
    System.out.println ("name:  " + _name);
    System.out.println ("amount " + outstanding);
}

Если код, который вы пытаетесь извлечь из метода, для начала даже не принадлежит классу, то вы также можете использовать Извлечь класс .

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

Кроме того, JetBrains делает некоторые действительно хорошие IDE практически для любого языка, в которые встроены некоторые действительно хорошие инструменты рефакторинга. У них также есть плагин для Visual Studio под названием ReSharper , который предоставляет некоторые из тех же функций и преимуществ.

1 голос
/ 31 мая 2011

Рефакторинг - это изменение кода без изменения его поведения.Когда вы разбиваете код на несколько методов, это называется рефакторингом метода.Когда вы берете эти методы и помещаете их поведение во многие классы (которые могут помочь поддерживать единую ответственность для объекта / класса), это называется рефакторингом для объектов .

1 голос
/ 31 мая 2011

Это просто "Рефакторинг".

http://en.wikipedia.org/wiki/Code_refactoring

0 голосов
/ 31 мая 2011

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

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

0 голосов
/ 31 мая 2011

Практика называется рефакторинг.

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

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

красный. зеленый. рефакторинг для удаления дублирования.

...