2012-12-15 2 views
4

У меня есть один вопрос, на который я не могу ответить нигде. Это касается развязки кода с интерфейсами. Вопрос в том, должен ли ВСЕ объекты внутри других объектов (созданных и используемых) рефакторироваться в интерфейс, чтобы следовать принципу инверсии зависимостей S.O.L.I.D.? Как насчет новых объектов внутри четного управляемого метода ?, например. метод, который называется, когда я нажимаю кнопку. Должен ли объект проходить через, скажем, конструктор? Конечно, все это относится к моим объектам, а не к BCL?Если все объекты развязаны

+6

Ответ «это зависит». – millimoose

+1

Спросите своего жителя «архитектор». (Это зависит от общего видения вашего проекта.) – McGarnagle

ответ

5

millimoose дал отличный ответ. Это особенно хорошо, потому что это правильный ответ на любую проблему программирования.

Я хотел бы немного уточнить. При работе со сценариями, как это, выполняются следующие условия:

  1. Развязка поставляется за свой счет.
  2. Никакой код не будет идеальным, так как вы, вероятно, не будете получать все время, чтобы работать на нем.
  3. Это не конец света, если ваш код более связан, чем может быть.

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

Слышали ли вы о книге «Программирование на основе событий: принятие событий к пределу»? Это все о связи: http://books.google.com/books?id=9CL446IzhuAC&pg=PR21&dq=taking+events+to+the+limit&hl=en&sa=X&ei=bcfLUMzRMcWLqgHi-oHoBw&ved=0CDUQ6wEwAA

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

+0

«Сколько вы готовы заплатить за развязку? В какой-то момент есть баланс между временем проектирования и воспринимаемой ремонтопригодностью - имея в виду, что вы даже не знаете, как ваш код все равно изменится ». Похоже, что если вы начнете с философии, что с самого начала вы будете полностью отделены от всех, что в ваш проект не будет добавлено никаких накладных расходов, поэтому вам не нужно будет оправдывать расходы на дополнительное развязывание времени. вы просто автоматически сделаете это, как вы разработали. – user1186050

+0

Я думаю, что если вы планируете развязать с самого начала, тогда это будет дешевле, но это может стоить больше, чем (частично) связанный дизайн. Это зависит от множества факторов. Также имейте в виду, я просто беру расходы на первоначальный выпуск; не зная, где будет вести долгосрочное техническое обслуживание, я не могу сказать, будет ли определенная развязка «окупаться». – RonaldBarzell