Возможно ли превышение OO?

Мой вопрос прост; возможно ли над объектно-ориентированным кодом?

Сколько стоит? В какой момент вы отказываетесь от удобочитаемости и ремонтопригодности ради OO?

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

Мысли?

Ответы

Ответ 1

возможно ли над объектно-ориентированным кодом

Да

Ответ 2

Если вы считаете, что больше объектов больше объектно-ориентированных, то да.

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

Ответ 3

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

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

Ответ 4

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

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

Ответ 5

Мой совет - не переусердствовать. Это обычно приводит к тому, что вы делаете ЧТО-ТО (если не OO). Эмпирическое правило, которое я обычно использую, таково: если это затрудняет задачу обертывания головы, я использую объект. Если другая парадигма упрощает обертывание головы, чем если бы я использовал объект, я использую это.

Эта стратегия еще не подвела меня.

Ответ 6

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

Ответ 7

Да, так же, как можно переопределить дизайн базы данных.

Это, кажется, один из тех пуристских и прагматических дебатов, которые никогда не кончатся. <: S

Ответ 8

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

Ответ 9

Я думаю, что ваш вопрос должен читать: "Можете ли вы над Архитектурой ваше приложение?"

И, конечно, ответ еще есть. OO - это всего лишь подход к дизайну. Если вы тратите свое время на создание ненужной сложности в системе, потому что "Polymorphism Rocks!". Тогда да, возможно, вы закончили OOing.

Самый XP-ответ: Независимо от того, какой подход вы предпочитаете (OO, процедурный и т.д.), дизайн должен быть настолько сложным, насколько это явно необходимо.

Ответ 10

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

Ответ 11

возможно ли над объектно-ориентированным кодом ваш код?

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

Ответ 12

Я думаю, это возможно, но его трудно ответить на ваши абстрактные термины (каламбур не предназначен). Приведите пример более OO.

Ответ 14

Я думаю, что бывают моменты, когда дизайн OO может быть взят до крайности, и даже в очень больших проектах сделать код менее удобочитаемым и поддерживаемым. Например, можно использовать базовый класс footware, а также дочерние классы кроссовок, платьев для обуви и т.д. Но я прочитал/просмотрел код людей, где казалось, что они доходили до того, что создавали классы под ним для NikeSneakers и ReebokSneakers. Разумеется, существуют различия между этими двумя, но чтобы иметь читаемый, поддерживаемый код, я считаю, что его важно, порой, расширять класс, чтобы адаптироваться к различиям, а не создавать новые дочерние классы для обработки различий.

Ответ 15

Да, и это легко. Код не лучше просто потому, что он объектно-ориентированный, не более, чем лучше, потому что он модульный или функциональный или общий или генеративный или основанный на потоке данных или ориентированный на аспект или что-то еще.

Хороший код - хороший код, потому что он хорошо разработан в своей парадигме программирования.

Хорошая конструкция требует осторожности.

Быть осторожным требует времени.

Пример для вашего случая: я видел ужасные фрагменты Java, в которых, в названии будучи "объектно ориентированным", каждый класс реализует некоторый интерфейс, даже если ни один другой класс никогда не реализует этот интерфейс. Иногда это взломать, но в других это действительно безвозмездно.

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

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

Ответ 16

Я думаю, что ясный ответ - да, но в зависимости от домена, на который вы ссылаетесь, он может быть ДЕЙСТВИТЕЛЬНО да или менее так. Если вы создаете высокоуровневые .Net или Java-приложения, то я думаю, что это последнее, поскольку OO в основном встроена в язык. С другой стороны, если вы работаете над встроенными приложениями, то опасности и вероятность того, что вы превысили OO'ing, высоки. Нет ничего хуже, чем видеть, как действительно человек высокого уровня выходит на внедренный проект и усложняет то, что, по их мнению, является уродливым, но это самые простые и быстрые способы сделать что-то.

Ответ 17

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