Факторы, улучшающие возможность повторного использования кода - PullRequest
5 голосов
/ 30 января 2010

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

  • насколько это сокращает усилия по внедрению и обслуживанию
  • качество применения не ухудшается
  • насколько снижена сложность

(все по сравнению с переопределением с более низкого уровня).

PS. Если возможно, укажите один фактор в ответе с описанием, как он помогает в вашем случае.

Ответы [ 4 ]

5 голосов
/ 30 января 2010

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

3 голосов
/ 09 марта 2011

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

Чтобы быть более конкретным и обратиться к комментарию, я бы перечислил следующие навыки / личные установки, которые способствуют повторному использованию кода:

  • Дисциплина (копировать можно легко, хорошая дисциплина требует многократного использования)
  • Страсть (вы должны ХОТИТЕ сделать код многократно используемым и гордиться им)
  • Видение проекта (вы ДОЛЖНЫ видеть общую картину проекта, а не только утверждения кода)
  • Чувство кода (вы ДОЛЖНЫ быть в состоянии поймать запах кода , см. Методы и шаблоны, которые могут помочь)
  • Только включение Test-Driven-Development mind может обеспечить качество кода наряду с возможностью повторного использования.

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

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

3 голосов
/ 30 января 2010

Разработка через тестирование . Чтобы код легко тестировался модулем, он должен:

1) делать только одну вещь

2) иметь как можно меньше зависимостей

3) часто эти зависимости передаются (чтобы их можно было отключить)

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

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

2 голосов
/ 30 января 2010

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

...