DoSomethingToThing (Thing n) против Thing.DoSomething () - PullRequest
12 голосов
/ 17 сентября 2008

Какие факторы определяют, какой подход является более подходящим?

Ответы [ 16 ]

0 голосов
/ 17 сентября 2008

Даже если вы не работаете на языке OO, где у вас есть Thing.DoSomething (), для общей читабельности вашего кода, с набором функций, таких как:

ThingDoSomething () ThingDoAnotherTask () ThingWeDoSomethingElse ()

тогда

AnotherThingDoSomething ()

и так далее, намного лучше.

Весь код, который работает на «Вещи», находится в одном месте. Конечно, «DoSomething» и другие задачи должны называться согласованно - поэтому у вас есть ThingOneRead (), ThingTwoRead () ... к настоящему моменту вы должны получить точку. Когда вы вернетесь к работе над кодом через двенадцать месяцев, вы по достоинству оцените, что нашли время, чтобы сделать вещи логичными.

0 голосов
/ 17 сентября 2008

Вот несколько факторов, которые следует учитывать:

  • Можете ли вы изменить или расширить класс Thing. Если нет, используйте прежний
  • Может ли Thing быть создан. Если нет, используйте последний как статический метод
  • Если Thing действительно изменяется (то есть имеет свойства, которые меняются), предпочтите последнее. Если Thing не изменен, последний также приемлем.
  • В противном случае, поскольку объекты предназначены для отображения на объекте реального мира, выберите метод, который кажется более обоснованным в реальности.
0 голосов
/ 17 сентября 2008

Это выбор объектно-ориентированного или процедурного программирования:)

Я думаю, что хорошо документированные преимущества ОО применимы к Thing.DoSomething ()

0 голосов
/ 17 сентября 2008

DoSomethingToThing (Thing n) - это скорее функциональный подход, тогда как Thing.DoSomething () - это скорее объектно-ориентированный подход.

0 голосов
/ 17 сентября 2008

Недостаточно информации здесь. Это зависит от того, поддерживает ли ваш язык конструкцию "Thing.something" или эквивалентную (т.е. это язык OO). Если так, то это гораздо более уместно, потому что это парадигма ОО (члены должны быть связаны с объектом, с которым они действуют). В процедурном стиле, конечно, DoSomethingtoThing () - ваш единственный выбор ... или ThingDoSomething ()

...