[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Верна ли грамматика ООП
Страницы: 1, 2
twin
Цитата (Another Reality @ 11.02.2017 - 18:03)
Но, вопросы ТС были вполне локаничны и недвусмысленны, как следствие - ответы такие же.
В том и дело, что нет. Человек написал свой первый класс, а его тут же макнули в SOLIDол. Причем совсем не в ту часть, в какую надо было. Если уж на то пошло, нужно было начинать с Open/Closed, хотя нет никакой уверенности, что он знает о наследовании.

Какой SOLID нафиг, это разве недвусмысленный ответ? Что там полезного для человека, который пока считает, что ООП, это
Цитата (maximka787 @ 10.02.2017 - 11:41)
наполнять объект, не задумываясь о том, как там оно внутри

ИМХО тут нужно проще. Начать с того, что если всё собирать в один класс, то он распухнет, станет сложным и неуправляемым (подробности).
Что это плохая практика, называемая "божественный объект" (подробности).
Что есть хорошая практика делить все по смежному функционалу (подробности).
(И вот только тут!) тогда будет соблюден первый принцип SOLID (подробности).

А сразу отправлять к формулировкам, это бессмысленно. Он как минимум нифига не поймет, как максимум вообще читать не станет. Ибо я говорил уже, даже считающие себя крутыми ООПэшниками программисты далеко не всегда понимают SOLID, просто принимают как догму. А это не полезно, а иногда даже вредно. Ибо это не план действий, а рекомендации по упорядочиванию монолитного ООП. Причем именно монолитного, не сервисного.

А что говорить о человеке, делающим первые шаги...

UPD Я вот вспомнил тут, еще в 11-том году я написал класс (один) для внутренней переписки с техподдержкой. Тогда тоже не знал про SOLID, но не в этом дело. Просто хотелось иметь автономный класс в одном файле. Так вот, он до сих пор работает и есть пить не просит. smile.gif И никакие пугалки про расширяемость, про спагетти и god-объекты, про html в классе, да и вообще все страшилки ему не указ. biggrin.gif Шесть лет отпахал, и еще отпашет, пока я не доберусь полностью переписать проект.

Это я так, к слову. А то сейчас напугаете человека, мол работать не будет, мол то-сё и капец. Все правильно написано. Для той цели, которая поставлена. А теперь дело за рефакторингом, если цель другая.

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

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

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

user posted image
Another Reality
Цитата (twin @ 12.02.2017 - 09:10)
UPD Я вот вспомнил тут, еще в 11-том году я написал класс (один) для внутренней переписки с техподдержкой. Тогда тоже не знал про SOLID, но не в этом дело. Просто хотелось иметь автономный класс в одном файле. Так вот, он до сих пор работает и есть пить не просит. smile.gif И никакие пугалки про расширяемость, про спагетти и god-объекты, про html в классе, да и вообще все страшилки ему не указ. biggrin.gif Шесть лет отпахал, и еще отпашет, пока я не доберусь полностью переписать проект.

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

У человека должна была появиться куча "почему?", вот и сделали отсылку на SOLID, как на вектор для копания ответов, а не в качестве забивания в голову гвоздя догматов. smile.gif
twin
Цитата (Another Reality @ 12.02.2017 - 08:02)
вот и сделали отсылку на SOLID, как на вектор для копания ответов
Это примерно как человек учится ходить, а его вместо ходунков отправляют на беговую дорожку. smile.gif


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

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

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

user posted image
chee
Из всех принципов SOLID, начинающий ООП программист должен научиться для начала первым трём SOL. Первые 3 принципа знать обязательно, потому что, во-первых, они простые, во-вторых они базовые для других концепций.

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
Guest
Ребят, спасибо всем, кто принимает участие в теме. Я понимал, что создав эту тему много споров возникнет. Это как на других ресурсах, стоит заикнуться про ооп, сразу "Ты не знаешь Yii, Sympony, Zend? Ты пишешь на хреновом IDE?" иди и учи лучше бухгалтерию, а говнокод не пиши. В общем я привык. Я видел г.код и сам частенько его переделываю, матерюсь. В универе делали примитивные игрушки на Си, там как-то логичней было использовать объекты, скажу больше, там НЕ логично их НЕ использовать. А в вэбе ООП лично для меня интересно использовать только под конкретные задачи / плагины / модули, а не под всё подряд. Например, недавно скачал класс для работы с PDF. Его инициализируешь, наполняешь (много методов разных) и сохраняешь в файл. Удобно и просто мне, как кодеру. То же самое я и решил сделать на классе Фильм. Ну просто мне удобней так, чем сразу со сложного начать. Думал, наполню я объект фильм и выведу его в файл. Меня интересовала больше грамматика моего кода и всего-то)

В функциональном кодинге, у меня логика железно распределена. На каждую конкретную задачу (страница "пользователи", "заказы", "блокнот менеджера", "табели", "план" и тд., делается отдельная страница.

.htaccess -> index.php -> парсинг url -> "роутер" напрявляют с помощью 1 файла в нужную функцию. Дальше всё, что я (или главный наш) творим, находится в рамках конкретной функции.

function page_XXXXX(){

ob_start();

//мой код

$buffer = ob_get_contents();
ob_end_clean();
return $buffer;

}


Всё строго по правилам:
1) echo без буферизации выводит данные (собранную страницу) только один раз, в конце файла index.php
2) В рамках одного php файла открывается тег "<?php" строго один раз
3) html шаблоны страниц лежат в файле шаблонов, без единого php кода. Всё.

Остальная работа идет в каждой функции.
При этом есть "сборник" функций по конкретным "сущностям"

Вот например список функций для работы с пользователями.
1) Функция создания и регистрация пользователя
2) Функция редактирование пользователя
3) Функция удаление пользователя
4) Функция вывод всех пользователей в массив для нужд других функций и модулей.
5) Авторизация
6) Напоминание паролей и какие-то еще...

Отличаются функции только окончанием. Префикс одинаковый.

Класс в будущем я планирую применить только в случае к Объекту "пользователь", но это после того, как научусь и пойму, что мне не хватает тех 6-ти функций и проще работать с классом.

:)
maximka787
Это был я smile.gif
Отредактировать не могу сообщение, жаль))

_____________
..Работает - не трогай!
twin
Много лишнего)
function page_XXXXX(){

ob_start();

//мой код

return ob_get_clean();

}


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

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

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

user posted image
maximka787
Цитата (twin @ 13.02.2017 - 12:32)
Много лишнего)

Спасибо))


Мужики, я правильно понял, что классы я могу постепенно создавать и внедрять их в мои функции, заменяя постепенно код вот таким способом.

class User
{
private $users = array();

public function __construct()
{
$this->users = range(1,50); //временно
}

public function getAll()
{
return $this->users;
}
}


class Order
{
private $orders = array();

public function getAll()
{
$this->orders = array(
1 => array('user_id' => 1, 'comment' => 'комент1'),
2 => array('user_id' => 3, 'comment' => ''),
3 => array('user_id' => 8, 'comment' => 'комент3')
);


return $this->orders;
}
}



function func_XXXXX()
{
$u = new User(); // вот тут!
$o = new Order(); // и тут

$users = $u->getAll(); //то есть цель получить данные из класса в виде массива (то, что сейчас делается способом $users = user_list(); )
$orders = $o->getAll();

if(!is_array($users) || count($users) == 0) return;

foreach($users as $v)
{
//start
}
}


echo func_XXXXX();


_____________
..Работает - не трогай!
Быстрый ответ:

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