Были ли объекты с точки зрения повторного использования кода?

softwareengineering.stackexchange https://softwareengineering.stackexchange.com/questions/1059

  •  16-10-2019
  •  | 
  •  

Вопрос

Я часто слышал, что он сказал, что объекты не доставляются с точки зрения повторного использования кода. Вы согласны? Если вы верите, что они этого не сделали, почему бы и нет?

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

Решение

Нет, не обязательно.

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

Хорошо спроектирован библиотеки Выполнить обещание повторного использования кода, а не объекты как таковые.

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

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

Чтобы ответить на вопрос немного более напрямую, существует множество довольно хороших инструментов, чтобы избежать повторения себя: наследование, черты, делегирование, функции высшего порядка и т. Д. Из них люди, как правило, путают наследство с OO в целом-и и и и т. Д. Они также склонны немного чрезмерно использовать это, если вы спросите меня. Может быть, вот откуда возникает часть атмосфера «Оососа»: поиск наследия застрял, где у него нет естественного права быть :)

Нет, «объекты» не сделали кода повторно использовать более простым или более распространенным. Те же самые проблемы, которые предотвращают повторное использование кода в модульной программе (проектирование, тестирование и документирование API общего назначения требует значительно больших усилий. Мастер None-логика, предназначенная для повторного использования, может быть не очень оптимизирована для использования, к которым он фактически используется) применить к программам OO, причем дополнительная обеспокоенность тем, что плохо разработанная объектная модель может препятствовать повторному использованию повторного использования. код.

OO-это удобная абстракция для больших проблем, но опасайтесь шумиха 80-х-90-х годов: это не решает фундаментальные проблемы нашей торговли больше, чем это делает вафли для вас, пока вы спите.

Я не ожидаю, что все объекты будут использованы повторно, но у нас есть много объектов, которые мы повторно используем для многих различных проектов. У нас также есть объекты, которые просто повторно используются в одном проекте. Мы часто будем потреблять одни и те же бизнес-объекты (или объекты передачи данных), а также объекты бизнес-логики из настольного приложения Click-Once, веб-приложения и телефонного приложения для одного и того же проекта.

Где вы слышали, что OO не доставляет в повторном использовании? А что было рассуждением? Возможно, дизайн их объектов заставил их в эту ситуацию ...

Некоторые программисты скопируют и вставляют на любой язык и стиль.

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

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

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

пса Я знаю, что у людей будут проблемы с предыдущим абзацем, поэтому я немного объясню.

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

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

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

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

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

Да

ООП дает вам больше способов повторного использования кода

Нет

нет серебряной пули

Это зависит

На том, что вы вложили в это, и что вы ожидали в ответ!

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

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

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

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

Если они до сих пор выполнили свое обещание повторного использования кода? Да, если программы, написанные с учетом ООП, применяйте шаблоны дизайна разумно. В противном случае, в основном нет. Но, глядя на популярность крупномасштабных не тривиальных программ, которые Adobe Systems, Google и тому подобного, а также в то же, с C ++ или Java или другими языками ООП, я бы сказал, что OOP предстоит пройти долгий путь, прежде чем он вышел. Это время будет гораздо лучше подходит для того, чтобы задать этот вопрос и может помочь обеспечить наземную работу для новой парадигмы.

Лицензировано под: CC-BY-SA с атрибуция
scroll top