Я должен согласиться с @Karl Knechtel - это довольно плохой вопрос.По его словам, трудно объяснить почему, но я попробую.
Первая проблема заключается в том, что он использует термин, не определяя его, а «повторное использование кода» означает много разных вещей.для разных людей.Для некоторых людей вырезание и вставка квалифицируются как повторное использование кода.Как бы мне это ни нравилось, я должен с ними согласиться, по крайней мере, до некоторой степени.Другие люди определяют повторное использование трески способами, исключающими повторное использование и вставку как повторное использование кода (классификация другой копии того же кода в качестве отдельного кода, без повторного использования того же кода).Я тоже вижу эту точку зрения, хотя склоняюсь к тому, что их определение больше предназначено для достижения конкретной цели, чем для того, чтобы быть действительно значимым (т. Е. «Повторное использование кода» -> хорошо, «вырезать-вставить» -> плохо, поэтому »cut-n-paste "! =" повторное использование кода ").К сожалению, то, что мы смотрим здесь, находится прямо на границе, где вам нужно очень точное определение того, что означает повторное использование кода, прежде чем вы сможете ответить на вопрос.
Определение, используемое вашим профессором: вероятно, будет сильно зависеть от степени его энтузиазма по отношению к ООП - особенно в 90-е годы (или около того), когда ООП только становился мейнстримом, многие люди решили определять его таким образом, чтобы он включал только классную новую ООП "вещи».Чтобы достичь нирваны повторного использования кода, вы должны были не только подписаться на их ООП-религию, но и действительно поверить в нее !Нечто столь же обыденное, как композиция, не может быть квалифицировано - независимо от того, как странно они должны были искажать язык, чтобы это было правдой.
В качестве второго важного момента, после десятилетий использования ООП, несколько человекпровели довольно тщательные исследования того, какой код был повторно использован, а какой нет.Большинство из того, что я видел, пришли к довольно простому выводу: довольно сложно (т. Е. Практически невозможно) соотнести стиль кодирования с повторным использованием.Почти любое правило, которое вы пытаетесь сформулировать относительно того, что приведет или не приведет к повторному использованию кода, может и будет нарушаться на регулярной основе.
В-третьих, и то, что я подозреваю, имеет тенденцию быть главным в умах многих людей, так этотот факт, что если задавать вопрос вообще, звучит так, как будто это то, что может / повлияет на типичного кодера - что вы можете выбрать между композицией и наследованием (например), основываясь на том, что больше «способствует повторному использованию кода», иличто-то в этом порядке.Реальность такова, что (только для примера) вам следует выбирать между составом и наследованием , в первую очередь , основываясь на том, какие модели более точно моделируют проблему, которую вы пытаетесь решить, и на том, что поможет вам решить эту проблему.
Хотя у меня нет серьезных исследований, подтверждающих это утверждение, я бы сказал, что вероятность повторного использования этого кода будет сильно зависеть от пары факторов, которые редко даже учитываются в большинстве исследований: 1) насколько похожипроблемы, которую должен решить кто-то другой, и 2) считают ли они, что легче будет адаптировать ваш код к своей проблеме, чем писать новый код.
Я должен добавить это в некотором Из исследований, которые я видел, было обнаружено факторов , которые, по-видимому, влияли на повторное использование кода.Насколько я помню, тот, кто выделялся как самый важный / говорящий, был вовсе не сам код, а доступная документация для этого кода.Будучи способным использовать код без по сути реинжиниринга, он вносит большой вклад в его повторное использование.Вторым моментом было просто качество кода - ряд исследований проводился в местах / ситуациях, где они пытались способствовать повторному использованию кода.В большинстве случаев люди пытались повторно использовать немного больше кода, чем на самом деле, но им пришлось отказаться от него просто потому, что код был недостаточно хорош - от ошибок до неуклюжихинтерфейсы из-за плохой переносимости препятствуют повторному использованию.
Резюме: я официально заявлю, что повторное использование кода, вероятно, было самым преувеличенным, недооцененным обещанием в разработке программного обеспечения за последние пару десятилетий.Даже в лучшем случае повторное использование кода остается довольно труднодостижимой целью.Попытка упростить его до такой степени, чтобы рассматривать его как истинный / ложный вопрос, основанный на двух факторах, упрощает вопрос до такой степени, что он не только бессмысленный, но и совершенно нелепый.Похоже, это упрощает и унижает почти всю практику разработки программного обеспечения.