[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объект->действие (название класса)
Arh
Не знаю зачем это пишу, вдруг кто тоже забивал голову и так очевидными вещами.

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

Вот такие были дилеммы в своё время:
Нужен класс загрузки файлов, о и еще нужно загружать изображения, назову класс upload, а в них методы image и files
Есть класс загрузки - он загружает.

Или так:
Нужен класс отправки личных сообщений и сообщений на почту, хм то есть класс отправки, сделаю класс send а в нем методы mail и pm

Вроде логично - отправить->сообщение, отправить->письмо
Но это не правильно, так как допустим файл или сообщение нужно будет удалить, по такой логике нужно делать класс удаления del->file(), del->pm()

В общем как бы на первых парах не было логично сделать upload->file(), лучше так не делать =)

Нужно представлять класс как объект, а метод как действие и производить действия с объектами.

Например есть объект (письмо), его нужно отправить, или удалить, или проверить его статус, или мало ли еще какие действия придётся делать в будущем, всё это будет описано в классе.
$mail->send();
$files->upload();
$image->upload()->resize()->итд();


Вот, может кому пригодиться.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
dr.nomore
Объект это существительное. Метод это глагол. Свойство это имя прилагательное.

Читаем по-русски: отправить почту. Почта - словарная форма, отправить - глагол. Значит почта->отправить. Или mail->send() - отправить, mail->sent - отправлено.

Дать пинка. kick->give()
Дать пинка под зад kick->give(ass)
Получить пинка kick->take();
Получить пинка под зад kick->take(ass);
Получил пинка kick->taken == true;
Не получил пинка kick->taken == false;
Дал пинка kick->given == true;
Не дал пинка kick->given == false;
Дать такого пинка чтобы нога застряла в заднице: kick->give(ass, new Foot);


...
bestxp
Но главное не навешать лишних отвественностей

Например
счет не может себя оплатить, но может быть оплачен

$paymentService->pay($order);
$order->isPayd == true || false

но это скорее относиться к DDD , но это приходит со временем

twin
Недавно тут пережевывали похожее. smile.gif

С точки зрения ООП
kick->give()
звучит не "дать пинка", а "пинок дался". Ибо пинок в данном случае объект. И он взаимодействует с окружающей средой (задницей). А вот "дать пинка" - это императивное мышление:
giveKick(ass);

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

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.

user posted image
Arh
Цитата (dr.nomore @ 4.12.2013 - 12:55)
Читаем по-русски: отправить почту.

Дать пинка. kick->give()


Читаем НЕ по Русски smile.gif

По Русски это $послать->открытку();
То есть, есть действие (послать) и мы думаем, кого куда послать или что кому послать.
Послать друга за пивом, послать открытку подруге или послать подругу на х... Придётся в одном классе (послать) описать методы для всего что только можно послать, а также описать различные свойства, например друга не всегда получиться послать за пивом, вдруг сегодня друг злой.

А надо наоборот.
Есть объект, с ним уже думаем что можно сделать опираясь на его свойства.

Есть машина, её нужно завести: $машина->завести();
А то получится, что у нас есть (завести) и мы ходим и думаем что завести, какую машину, а может надо завести девушку или почту.

_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.