Мы отказались от идеи повторного использования кода? - PullRequest
12 голосов
/ 10 декабря 2008

Пару лет назад в СМИ было много всяких статей о как идея повторного использования кода была простым способом повысить производительность и качество кода.

Из блогов и сайтов, которые я регулярно проверяю, кажется, что идея «повторного использования кода» вышла из моды. Возможно, код сторонники повторного использования - все присоединились к толпе SOA? : -)

Интересно, что при поиске в Google повторного использования кода Второй результат называется:

«Повторное использование внутреннего кода считается опасным»!

Для меня идея повторного использования кода - это просто здравый смысл, в конце концов, посмотрите на успех проекта Apache Commons!

То, что я хочу знать, это:

  • Вы или ваша компания пытаетесь повторно использовать код?
  • Если да, то как и на каком уровне, т.е. на низком уровне API, компонентов или общая бизнес логика? Как вы или ваша компания повторно используете код?
  • Это работает?

Обсудить


Я полностью осознаю, что существует много доступных библиотек с открытым исходным кодом и что любой, кто использовал .NET или Java, повторно использовал код в той или иной форме. Это здравый смысл!

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

Я изначально спросил;

  • Вы или ваша компания пытаетесь повторно использовать код?
  • Если да, то как и на каком уровне, например, API низкого уровня, компоненты или общая бизнес-логика? Как вы или ваша компания повторно используете код?

С того места, где я сижу, я вижу очень мало примеров компаний, пытающихся повторно использовать код внутри страны?

Если у вас есть фрагмент кода, который потенциально может быть распространен в организации среднего размера, как бы вы сообщили другим членам компании, что этот lib / api / etc существует и может быть полезным?

Ответы [ 16 ]

9 голосов
/ 10 декабря 2008

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

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

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

5 голосов
/ 10 декабря 2008

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

Но нельзя просто написать код и ожидать его повторного использования; Повторное использование кода требует общения между членами команды и другими пользователями, чтобы люди знали, какой код доступен и как его использовать.

Для эффективного повторного использования кода необходимы следующие вещи:

  • Код или сама библиотека
  • Потребность в коде для нескольких проектов или усилий
  • Передача функций / возможностей кода
  • Инструкция по использованию кода
  • Обязательство поддерживать и улучшать код с течением времени
3 голосов
/ 10 декабря 2008

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

2 голосов
/ 10 декабря 2008

Я думаю, что повторное использование кода по большей части осуществляется через проекты с открытым исходным кодом. Все, что может быть повторно использовано или расширено, делается через библиотеки. У Java есть удивительное количество библиотек с открытым исходным кодом, доступных для выполнения большого количества вещей. Сравните это с C ++, и как рано все должно быть реализовано с нуля с использованием MFC или Win32 API.

1 голос
/ 30 июля 2009

Мой личный взгляд, основанный на практике в моей компании:

  • Вы или ваша компания пытаетесь повторно использовать код?

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

  • Если да, то как и на каком уровне, например, API низкого уровня, компоненты или общая бизнес-логика? Как вы или ваша компания повторно используете код?

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

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

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

  • Это работает?

Да, но не из-за потенциального или фактического повторного использования! На самом деле, за исключением нескольких базовых библиотек и компонентов пользовательского интерфейса, повторного использования не так много.

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

1 голос
/ 11 декабря 2008

Уровень внимания СМИ к проблеме имеет мало общего с ее важностью, говорим ли мы о разработке программного обеспечения или о политике! Важно не тратить впустую усилия на разработку, заново изобретая (или повторно поддерживая!) Колесо, но сейчас это настолько хорошо известно, что редактор, вероятно, не будет в восторге от другой статьи на эту тему.

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

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

1 голос
/ 10 декабря 2008

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

1 голос
/ 10 декабря 2008

Конечно, мы повторно используем код.

Существует почти бесконечное количество пакетов, библиотек и общих объектов, доступных для всех языков, с целыми сообществами разработчиков, поддерживающими и обновляющими их.

1 голос
/ 10 декабря 2008

Идея повторного использования кода больше не является новой идеей ... отсюда и явное отсутствие интереса. Но это все еще очень хорошая идея. Вся платформа .NET и Java API являются хорошими примерами повторного использования кода в действии.

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

1 голос
/ 10 декабря 2008

Мы повторно используем код.

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

Обычно код разрабатывается для одного приложения. И если он достаточно универсален, он продвигается в библиотеку. Это работает отлично.

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