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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Обзор: ООП где-то рядом ч.3.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Описание: еще немного продолжения..
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2011 - 20:02:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Обзор: ООП где-то рядом ч.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. Сейчас не особо много свободного времени чтобы писать сразу и много. Но раз в неделю я стараюсь что-то начеркать и выложить. А сейчас убежал я работать Закатив глазки
 
 Top
Данил_123
Отправлено: 30 Ноября, 2011 - 20:18:01
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




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


-----
http://mysitecost.ru
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2011 - 20:20:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Данил_123 две первые статьи прочитали? Раз в неделю я что-то пишу.
 
 Top
OrmaJever
Отправлено: 30 Ноября, 2011 - 20:26:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Статью не читал но за старание спасибку поставил!


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
Данил_123
Отправлено: 30 Ноября, 2011 - 20:31:44
Post Id


Участник


Покинул форум
Сообщений всего: 1026
Дата рег-ции: Июнь 2011  
Откуда: rostov


Помог: 9 раз(а)




DeepVarvar да, увидел третью прочитал 2 предыдущие.. Интересно пишешь.. +1 за первую, клацну тут разницы нет.. Тему бд и ее функции не забивать, напишу парочку(как пойдет) статеек..

(Отредактировано автором: 30 Ноября, 2011 - 20:32:52)



-----
http://mysitecost.ru
 
 Top
EuGen Администратор
Отправлено: 30 Ноября, 2011 - 20:34:33
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Если честно, не понял, как соотнести пункты 1 и 2 (сказки) с программированием. Ведь плохо можно написать и в ООП, а хорошо (если это уместно) - и в процедурном стиле.
Про быдлокод - отчасти верно. То, что Вы описали - лучше отнести к правилам хорошего кода. Теоретически можно себе представить красиво написанный код (с табуляциями, неймспесингом и т.п.), который все же будет "быдлокодом". Быдлокод - это системное понятие, но немного "завесу" над этим понятием Вам все же удалось приоткрыть.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Снегурочка
Отправлено: 30 Ноября, 2011 - 20:48:17
Post Id



Новичок


Покинул форум
Сообщений всего: 12
Дата рег-ции: Февр. 2011  
Откуда: Москва


Помог: 1 раз(а)




DeepVarvar пишет:
перед тем как садиться за клавиатуру и творить, следует все очень
досконально продумать наперёд и разделить логику на независимые части (методы или цепочки методов)


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

А вообще, очень интересно и забавно. Жду продолжения.
СЕКТОР "ПРИЗ" НА БАРАБАНЕ!!! ПРИМЕРЫ В СТУДИЮ!!!
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2011 - 20:51:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




OrmaJever, EuGen, спасибо Закатив глазки буду стараться дальше.
EuGen, в первой части мы там спорили. Я хочу сказать что с каждой очередной статейкой я буду "выпрямлять" мысли в еще более правильную сторону..
Иногда иначе чем очень отдаленно и не расскажешь о чем то не понятном.
Приходится искать аналогии очень и очень далеко.
К тому же, я считаю важным указывать на аккуратность и важность этой аккуратности и последовательности при написании кода и при проектировании приложения.
Только совокупность всего этого даст плоды в дальнейшем.
 
 Top
Bio man
Отправлено: 30 Ноября, 2011 - 23:16:33
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2751
Дата рег-ции: Июль 2010  
Откуда: Даугавпилс, Латвия


Помог: 52 раз(а)




+1. сказки очень понравились!
а Маша обрадовалась подарку? и что подарила Маша Васе? Не понял
 
 Top
DeepVarvar Супермодератор
Отправлено: 30 Ноября, 2011 - 23:24:51
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Хм... Я обязательно спрошу у Маши. Закатив глазки
 
 Top
Stierus Супермодератор
Отправлено: 01 Декабря, 2011 - 12:18:33
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




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

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


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



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




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

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

Совсем иное разбирать "локальное" действие метода или цепочки методов..
Ошибок будет во много раз меньше..
 
 Top
Stierus Супермодератор
Отправлено: 01 Декабря, 2011 - 12:35:27
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




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



Посетитель


Покинул форум
Сообщений всего: 495
Дата рег-ции: Окт. 2011  


Помог: 8 раз(а)




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

З.Ы. Про табы очень холиварно, даже не смотря на то, что я их фанат.
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Декабря, 2011 - 12:52:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Stierus пишет:
http://phpclub.ru/detail/article/oop-vs-proc
Зачетная ссылка Закатив глазки
Однако, как ты думаешь с чего именно я хотел начать практический пример? Хм, конечно же с проектирования. Я то понимаю.
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Обсуждение статей »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB