Каковы недостатки повторного использования кода?

StackOverflow https://stackoverflow.com/questions/1062403

  •  21-08-2019
  •  | 
  •  

Вопрос

Несколько лет назад нам понадобилась библиотека C++ IPC для вызова функций через TCP.Мы выбрали один и использовали его в нашем приложении.Через некоторое время стало ясно, что он не обеспечивает всех необходимых нам функций.В следующей версии нашего программного обеспечения мы выбросили стороннюю библиотеку IPC и заменили ее той, которую написали сами..С тех пор я иногда сомневаюсь, было ли это хорошим решением, потому что оказалось, что для этого потребовалось немало труда, и, очевидно, это было похоже на изобретая велосипед.Итак, мой вопрос:Есть ли недостатки в повторном использовании кода, которые оправдывают это новое изобретение?

Это было полезно?

Решение

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

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

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

Всегда есть компромисс.

Другие советы

Я могу предложить несколько

  1. Ошибки воспроизводятся — если вы повторно используете ошибочный код :)

  2. Иногда это может привести к дополнительным накладным расходам.Например, если вам просто нужно сделать простую вещь, не рекомендуется использовать сложную БОЛЬШУЮ библиотеку, реализующую требуемую функцию.

  3. Вы можете столкнуться с некоторыми проблемами лицензирования.

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

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

P.S.Причинами написания собственной библиотеки были:

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

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

Проблема номер один:вы можете успешно повторно использовать код только в том случае, если этот код ХОРОШИЙ.Если он был спроектирован плохо, содержит ошибки или очень хрупкий, вы столкнетесь с теми же проблемами, с которыми уже сталкивались — вам все равно придется делать это самостоятельно, потому что изменить существующий код очень сложно.

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

Золотая мудрость ::Прежде чем его можно будет использовать повторно, он должен быть пригоден для использования.

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

Поскольку большая часть повторно используемого кода поступает из Интернета, вы сталкиваетесь со всеми проблемами, связанными с Стена кода в ванной комнате Об этом говорит Этвуд.Вы можете столкнуться с проблемами с небезопасным или ненадежным заимствованным кодом, и чем больше он находится в «черном ящике», тем хуже.

Недостатки повторного использования кода:

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

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

В любом случае, это некоторые из аргументов, которые я бы использовал в поддержку «изобретения велосипеда».

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

Хотите знать, что вы используете для хранения заново изобретенной вами библиотеки?

<Ол>
  • Начальное время для создания повторно используемый код является более дорогим и затраты времени
  • Когда мастер ветвь имеет обновление, которое необходимо синхронизировать его и развернуть еще раз
  • В ошибках получить реплицируются - При повторном использовании кода багги
  • Повторное использование плохо документированный код может получить больше времени, чем ожидалось / оценкам,
  • Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top