[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: ООПять.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22
Rand
killer8080
Спасибо! Ну против классов я ничего не имею, но всему есть своя мера. Всё равно полезно бы было + нужна перегрузка для функций, использовать значения по умолчанию не всегда удобно ))

twin
Я это написал как сарказм. Я не создаю абстракций для функций работы с БД, т.к. считаю смену СУБД "исключительной ситуацией". Слишком дорого вносить ненужный функционал для 99 проектов ради исключительной ситуации в одном. Тем более что эта исключительная ситуация имеет решение. Люди ленятся переписывать код в исключительной ситуации, но хотят писать лишний код в куче рядовых проектов - парадокс? То, что написал Dezigo про MSSQ - да, история не приятная, но вспомните 1945 год... laugh.gif ядерный удар по Хиросиме - разве японцы теперь живут в бункерах? Советую брать с них пример dry.gif

P.S. Ох как я люблю обилие аналогий у противоборствующих сторон во время дискуссий laugh.gif Вообще читаю эту тему с позитивом, не надо какашками кидаться, можно просто принять во внимание мнение других людей и остаться при своём, придет время - возможно многое будет переосмыслено =)
SlavaFr
Цитата (twin @ 12.12.2012 - 13:44)
Другой вопрос, когда это вообще общий класс. Скажем User. Так вот, изменив что-то в нем, можно получить нежелательный эфект там, где этого изменения не ждали.

это проблема существует не только в программирование, но и в строительстве. Если ты в твоем доме начнеш изменять фундамент, то возникнут такие же проблемы. Чтоб вовремя эти проблемы найти, нужно просто Юнит-тесты писать и если в 10 местах все было как задумано, а в 3 местах заработало не так, то просто подставить в эти 3 места другую разновидность юзера.
Цитата (twin @ 12.12.2012 - 13:44)
Потому и делаются абстрактные модели и переопределяются методы в наследниках. Я просто не понимаю профита, зачем делать общий базовый класс, если все равно в наследниках мы пишем свою реализацию. Зачем эта шапка Мономаха? Что бы собрать воедино разные кусочки функционала. Это как у Попова

Дело не в том, что классы переписывать приходится, а в том что благодаря имеющемуся типу, с ним можно работать не вдаваясь в его реализацию. Обычно начинают с интерфейсов и только на них и ориентируются. Базовый абстрактный класс это попытка загнать в него общий функционал наследников и при переписи абстрактных методов описать персональную реализацию. Просто многие совмещают функционал абстрактного класса так же и для описания его типа (хотя для этого придуман интерфейс).

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

Пример, оперделить является ли password для юзера правельным

/**
* is password for user correct?
*
@param string $password
*
@param User $user
*
@return bool
*
@throws InvalidArgumentException | if $password not string
*/

public function isPasswordCorrect($password, User $user)
{
if (!is_string($password)) {
throw new InvalidArgumentException('$password must be string');
}

return $password === $user->getPassword();
}

мне в данном случае было абсолютно всеровно какой реализации юзер, мне главное знать его тип и его методы и этого достаточно не только чтоб добросовестно зделать работу, но написать для нее юнит тест используя Мок-Объект для юзера.

_____________
↓↓↓↓↓↓↓↓↓↓
ответ может быть здесь
или в mysql_error();
Быстрый ответ:

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