Есть ли у процедурного программирования какие-либо преимущества перед ООП? - PullRequest
36 голосов
/ 09 февраля 2009

[Редактировать:] Ранее я задавал этот вопрос, возможно, с плохо сформулированным вопросом о том, когда использовать ООП, а не когда использовать процедурное программирование - некоторые ответы подразумевали, что я просил помочь понять ООП. Наоборот, я много использовал ООП, но хочу знать, когда использовать процедурный подход. Судя по ответам, я полагаю, что существует довольно твердый консенсус в отношении того, что ООП, как правило, является лучшим всесторонним подходом, но следует использовать процедурный язык, если архитектура ООП не обеспечит каких-либо преимуществ повторного использования в долгосрочной перспективе.

Однако мой опыт программиста на Java был иным. Я увидел массивную Java-программу, которую я спроектировал, переписал гуру Perl в 1/10 кода, который я написал, и, казалось бы, такой же надежный, как моя модель совершенства ООП. В моей архитектуре было много повторного использования, но более краткий процедурный подход позволил получить превосходное решение.

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

Кто-нибудь может привести примеры того, как эти сценарии будут выглядеть?

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

Ответы [ 22 ]

0 голосов
/ 09 февраля 2009

Большинство исследований показали, что ОО-код является более кратким, чем процедурный код. Если вы посмотрите на проекты, которые переписывают существующий код C на C ++ (не то, что я обязательно советую, кстати), вы, как правило, видите сокращение размера кода от 50 до 75 процентов.

Так что ответ - всегда используйте OO!

0 голосов
/ 09 февраля 2009

ИМХО, долгосрочные выгоды от ООП перевешивают экономию времени в краткосрочной перспективе.

Как сказал AZ, использование ООП процедурным способом (что я и делаю довольно часто) является хорошим способом (для небольших проектов). Чем больше проект, тем больше ООП вы должны использовать.

...