Объектная оргия

Jun 06, 2008 21:18

"Объектная оргия" термин в программировании, описывающий типичный анти-шиблон. При объектной оргии объекты недостаточно инкапсулированы и позволяют неограниченный доступ к своим внутренним свойствам. В результате код становится трудно читаемым, потому что становится непонятно, для чего вообще предназначен объект. Интерфейс класса теряет смысл. И ( Read more... )

анти-шаблоны, php

Leave a comment

Comments 17

quiet_george June 6 2008, 19:39:27 UTC
Ну вот теперь я врубился точно, почему следует избегать public <И изменить такой класс в будущем становится практически невозможно, потому что нельзя быть уверенным, что какая-то часть приложения не обращается напрямую к свойству>... вернее понял, что не столько избегать, сколько в чем смысл public and protected, потому что в учебниках можно встретить лишь описание: public-можно обращаться извне, protected-нельзя или объяснения в таком же роде...

А вообще - это только через опыт - "опыт, сын ошибок трудных"...

Reply


veter_r_r June 7 2008, 08:24:49 UTC
Ага, было непонятно, зачем класс, а поменяли с public на protected и сразу стало понятно, зачем этот класс придуман!
:)

Reply

anti_anti_life June 7 2008, 09:31:26 UTC
Не так всё просто. Если свойство неоправданно задекларированно как public, то скорее всего весь класс реализован неверно с точки зрения ООП. Тоесть внутренними ресурсами объекта оперирует приложение, меняя его критичные свойства без его ведома. Тогда хочется сделать вывод, что объект - это скорее просто массив со значениеям, а не экземпляр класса. Если просто поменять public на protected то приложение, скорее всего перестанет работать.

Reply

veter_r_r June 7 2008, 10:03:13 UTC
С точки зрения ООП никто не запрещает приложению менять ресурсы объекта. Это не есть очень хорошо, но тем не менее имеет право на жизнь.
Тем более в PHP, где все объекты живут секунды три-четыре, нет смысла использовать мега-паттерны с навешиванием на каждое свойство гетеров, сетеров и черта в ступе.

btw, объектр это и есть массив.. только с напиханными в него методами. Сугубо физически :)

Reply

anti_anti_life June 7 2008, 10:10:46 UTC
С точки зрения ООП приложению КТЕГАРИЧЕСКИ ЗАПРЕЩЕНО менять внутренние ресурсы объекта напрямую.

Нет никакой связи между этим анти-шаблоном и временем жизни объектов. Но даже если на то пошло, то в подавляющем большенстве случаев в PHP используют паттерн ActiveRecord, и можно сказать, что объект "живёт" пока существует запись в базе данных, а это может быть не год и не два. Но никак не секунды.
Геттеры и сеттеры не решают проблемы "Объектной оргии", они лишь переводт её в новый вид. Вы не улавливаете главной идеи анти-шаблона "Объектная оргия" - <И изменить такой класс в будущем становится практически невозможно, потому что нельзя быть уверенным, что какая-то часть приложения не обращается напрямую к свойству>

Reply


Leave a comment

Up