Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Обзор: ООП где-то рядом ч.3.
Форумы портала PHP.SU » Разное » Обсуждение статей » Обзор: ООП где-то рядом ч.3.

Страниц (2): [1] 2 »
 

1. DeepVarvar - 30 Ноября, 2011 - 20:02:58 - перейти к сообщению
Обзор: ООП где-то рядом ч.3.
(Бывшая тема "ООП с самого начала")

Тут ч.1: http://forum.php.su/topic.php?fo...33&topic=744
Тут ч.2: http://forum.php.su/topic.php?fo...33&topic=755

1. Полемическая сказочка на ночь (версия 1 - процедурная)

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

И вот настал час. Мчится Вася по улицам к магазину с замиранием сердца.
Перебегает все дороги "на красный", торопится..

Залетел в магазин, немного отдышался и нырнул к прилавку, к заветному подарку..
А подарка то и нет...
Продавец говорит что взяли только-только, минут десять назад.
И побрел наш Вася опустив голову, обратно домой, не сделает он сюрприза для Маши...

2. Полемическая сказочка на ночь (версия 2 - объектная)

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

И вот настал час. Идет уверенный в себе Вася по улицам к магазину, счастливый.
Переходит все дороги только "на зеленый" и только по "зебре", не торопится..

Зайдя в магазин, здоровается с знакомым продавцом, обменивается взаимным уважением.
Продавец достает из под прилавка сохраненный подарок и продает его Васе.
Тут и сказки конец, думаю и так все уже ясно...

3. Опять полемика

Когда я писал две версии одной сказки, я думал о программировании.
Первая сказка указывает на процедурный подход, когда приходится в одном потоке следить за многими параметрами.
В таком случае очень велик процент ошибки действия или вы просто опоздаете как Вася.
Вторая же сказка говорит о том, что перед тем как садиться за клавиатуру и творить, следует все очень
досконально продумать наперёд и разделить логику на независимые части (методы или цепочки методов).
После чего вы будете знать каждый шаг, который необходимо сделать для достижения цели,
и совершенно спокойно и уверенно приметесь за написание кода, который к тому же будет намного понятнее процедурного.

4. Быдлокод

Как говорили многие из гуру тут на форуме - от быдлокода вас избавит только практика.
Это только ваши грабли, ваши лбы и ваши синяки и шишки.

Если говорить о том "как" должно выглядеть правильное web-приложение, то четкого ответа нет.
Однако есть несколько пунктов, которые стоит соблюдать всегда и при любых обстоятельствах.
Вот они:

1) Используйте табуляцию, придерживайтесь одного стиля написания.

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

3) Сначала логика, затем вывод готовых данных. Это значит что в то время, когда работает логическая часть приложения,
в буфер не должно сбросится ни одного хтмл-тега или даже пробела или перевода строки. Все получаемые в процессе данные нужно сохранять и только в самом конце сбрасывать их на страницу пользователю.

4) Перед тем как садиться за написание, возьмите ручку и бумагу и нарисуйте квадратиками и стрелочками, что куда
и какие данные должно передавать.

5. На этот раз коротко

Хотя и коротко, зато по существу. в следующий раз начнем разбирать реальный практический пример.
Начнем с самого простого, но правильного с объектной точки зрения web-приложения, затем будем добавлять понемногу функционал.
Разберем различные подходы. Укажем на их плюсы и минусы.
На протяжении уже трех статеек я хожу вокруг да около. Но как оказалось сразу весь вкус объяснить не получается. Просто наберитесь терпения. Мы обязательно пойдем дальше.

-------

P.S. Сейчас не особо много свободного времени чтобы писать сразу и много. Но раз в неделю я стараюсь что-то начеркать и выложить. А сейчас убежал я работать Закатив глазки
2. Данил_123 - 30 Ноября, 2011 - 20:18:01 - перейти к сообщению
DeepVarvar все ясно и доходчево(ведь нет класов и их описаний).. Правда на хаха пропирало, такой серьезный человек, сказки бомбы).. Думаю это все ясно, когда к ягодкам перейдешь?
3. DeepVarvar - 30 Ноября, 2011 - 20:20:05 - перейти к сообщению
Данил_123 две первые статьи прочитали? Раз в неделю я что-то пишу.
4. OrmaJever - 30 Ноября, 2011 - 20:26:04 - перейти к сообщению
Статью не читал но за старание спасибку поставил!
5. Данил_123 - 30 Ноября, 2011 - 20:31:44 - перейти к сообщению
DeepVarvar да, увидел третью прочитал 2 предыдущие.. Интересно пишешь.. +1 за первую, клацну тут разницы нет.. Тему бд и ее функции не забивать, напишу парочку(как пойдет) статеек..
6. EuGen - 30 Ноября, 2011 - 20:34:33 - перейти к сообщению
Если честно, не понял, как соотнести пункты 1 и 2 (сказки) с программированием. Ведь плохо можно написать и в ООП, а хорошо (если это уместно) - и в процедурном стиле.
Про быдлокод - отчасти верно. То, что Вы описали - лучше отнести к правилам хорошего кода. Теоретически можно себе представить красиво написанный код (с табуляциями, неймспесингом и т.п.), который все же будет "быдлокодом". Быдлокод - это системное понятие, но немного "завесу" над этим понятием Вам все же удалось приоткрыть.
7. Снегурочка - 30 Ноября, 2011 - 20:48:17 - перейти к сообщению
DeepVarvar пишет:
перед тем как садиться за клавиатуру и творить, следует все очень
досконально продумать наперёд и разделить логику на независимые части (методы или цепочки методов)


Да-да-да! Очень мне это напоминает одного знакомого. Улыбка

А вообще, очень интересно и забавно. Жду продолжения.
СЕКТОР "ПРИЗ" НА БАРАБАНЕ!!! ПРИМЕРЫ В СТУДИЮ!!!
8. DeepVarvar - 30 Ноября, 2011 - 20:51:41 - перейти к сообщению
OrmaJever, EuGen, спасибо Закатив глазки буду стараться дальше.
EuGen, в первой части мы там спорили. Я хочу сказать что с каждой очередной статейкой я буду "выпрямлять" мысли в еще более правильную сторону..
Иногда иначе чем очень отдаленно и не расскажешь о чем то не понятном.
Приходится искать аналогии очень и очень далеко.
К тому же, я считаю важным указывать на аккуратность и важность этой аккуратности и последовательности при написании кода и при проектировании приложения.
Только совокупность всего этого даст плоды в дальнейшем.
9. Bio man - 30 Ноября, 2011 - 23:16:33 - перейти к сообщению
+1. сказки очень понравились!
а Маша обрадовалась подарку? и что подарила Маша Васе? Не понял
10. DeepVarvar - 30 Ноября, 2011 - 23:24:51 - перейти к сообщению
Хм... Я обязательно спрошу у Маши. Закатив глазки
11. Stierus - 01 Декабря, 2011 - 12:18:33 - перейти к сообщению
Я не очень понял аналогии в сказках. В процедурном стиле тоже есть блокировки, так же мог бы он залочить этот подарок и прийти когда ему захочется - к чему эта аналогия?

ps
Пишешь - молодец, помои лить не буду, но я все еще не могу понять ход твоих мыслей, честно Улыбка ... ни одна из трех статей не дает ответов на вопросы, касающиеся ООП, а лишь запутывают и дают какие-то неверные представления ... к чему ты ведешь ?Улыбка
(Добавление)
Цитата:
Когда я писал две версии одной сказки, я думал о программировании.
Первая сказка указывает на процедурный подход, когда приходится в одном потоке следить за многими параметрами.
В таком случае очень велик процент ошибки действия или вы просто опоздаете как Вася.
Вторая же сказка говорит о том, что перед тем как садиться за клавиатуру и творить, следует все очень
досконально продумать наперёд и разделить логику на независимые части (методы или цепочки методов).


И в процедурном стиле тоже нужно садиться и разбивать, продумывать. Только в процедурном ты мыслишь действиями - ты получаешь данные, обрабатываешь их и отдаешь. А в ООП-стиле ты мыслишь сущностями и состояниями этих сущностей - ты можешь работать не только с полученными данными, но и с хранимыми. То есть идет связывание данных и логики работы с ними.
12. DeepVarvar - 01 Декабря, 2011 - 12:30:44 - перейти к сообщению
В следующей уже хотел начать разбирать простейший недодвижок, постепенно его обвешивая необходимыми вещами: перехват ошибок, логи, один "узловой" объект, аутенфикация пользователя...

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

Совсем иное разбирать "локальное" действие метода или цепочки методов..
Ошибок будет во много раз меньше..
13. Stierus - 01 Декабря, 2011 - 12:35:27 - перейти к сообщению
Я опять не вижу связи с ООП- и процедурным стилем программирования, ты хоть убей, причем тут это? ... ты сравниваешь мягкое с теплым. Писать не думая или писать в ООП-стиле. Писать локальные методы или проектировать ООП-архитектуру ... и в ООП и в функциональном программировании нужно планирование, разбиение, и там и там есть глобальный вижн системы, а есть локальные методы классов и функции. Разница не в этом, как ты не поймешь Улыбка ... попробуй почитать http://phpclub[dot]ru/detail/article/oop-vs-proc
14. Самогонщик - 01 Декабря, 2011 - 12:52:03 - перейти к сообщению
ООП по прежнему где-то рядом.
ОПП можно реализовать с помощью процедур, а с помощью классов можно писать в процедурном стиле. Дело ведь в подходе, а то как его реализуем. Про сами подходы, мне кажется, ничего толком не написано.

З.Ы. Про табы очень холиварно, даже не смотря на то, что я их фанат.
15. DeepVarvar - 01 Декабря, 2011 - 12:52:11 - перейти к сообщению
Stierus пишет:
http://phpclub.ru/detail/article/oop-vs-proc
Зачетная ссылка Закатив глазки
Однако, как ты думаешь с чего именно я хотел начать практический пример? Хм, конечно же с проектирования. Я то понимаю.

 

Powered by ExBB FM 1.0 RC1