Лыцарь пичальнава образа - про ООП (номер 20) [entries|archive|friends|userinfo]
silly_sad

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

про ООП (номер 20) [Jun. 22nd, 2009|12:57 pm]
Previous Entry Add to Memories Tell A Friend Next Entry
чем больше читаю чужих сорсов - тем злее я становлюсь и тем больше сквернословлю.
пример:
public function getSmthg()
{
$sql = "SELECT * FROM tbl .... ";
$res = Instances::DB()->query_and_fetch_as_array($sql);
return $res['field1'];
}

Вы опять спросите причём здесь ООП. Да при том что указанный код написан прожжонным оопэшником.

Вывод:
ООП скрывает от програмиста не только смысл написанного, но и сложность.
Вырабатывает привычку не видеть ход исполнения программы и не контролировать количество передаваемой информации.
LinkLeave a comment

Comments:
From:[info]sergey-cheban.livejournal.com
Date:June 22nd, 2009 - 03:31 pm
(Link)
Странно. А почему мы с Вами прекрасно видим имеющуюся избыточность, и нам ООП-стиль не мешает?
Я отвечу: потому что знание ООП не превращает ни обезьяну в человека, ни человека в обезьяну. Обезьяна напишет код по-обезьяньи, даже если будет писать на языке, поддерживающем ООП. Но и на ассемблере она тоже по-обезьяньи напишет (я видел, это ужас-ужас).
From:[info]silly_sad
Date:June 22nd, 2009 - 03:33 pm
(Link)
тут дело в том (на чём она училась) - меня учили сначала на ассемблере.
From:[info]sergey-cheban.livejournal.com
Date:June 22nd, 2009 - 04:45 pm
(Link)
А его, вероятно, вообще не учили. Вернее, ему прочитали курс "основы программирования", а в качестве языка программирования использовали C++. Ему объяснили, что такое подпрограмма и цикл, но про виртуальные функции, например, не рассказали, потому что это уже не основы программирования. Потом он где-то подсмотрел остальное, и, как умел, скопировал. А умел он по-обезьяньи.
В результате на выходе имеем обезьяну с гранатой. И чем лучше граната, тем сильнее окружающим хочется материться.
From:[info]silly_sad
Date:June 22nd, 2009 - 05:45 pm
(Link)
ну насчёт мощности этой гранаты скажу отдельно (не будет яркого примера кода (будет словестное описание (вы поймёте, а в пост это нельзя было поместить))):
ООП прячет реальные действия программы!
Вот у меня есть имя метода (увидел глазами в том месте где предположительно должен был быть запрос к базе) надо узнать какой запрос делается.
Греплю, нахожу определение. Почти пустое - вызов другого метода другого объекта. И так раза три-четыре. В конце (если повезёт) вижу реальный запрос.
Понимаете? Смысл-то программы именно в этом запросе содержится!!! А его обвешали тоннами СЛОВЕСТНОЙ МИШУРЫ (подобно тому (как заказчик преступления отгораживается от исполнителя сотней посредников, и таки этот метод реально работает - редкая птица разберёт эту цепочку)).
Вот ООП это и есть метод легко и стильно навешать словестной мишуры.
From:[info]sergey-cheban.livejournal.com
Date:June 23rd, 2009 - 12:28 am
(Link)
По-моему, это обычная история: скорость программы приносится в жертву скорости её разработки. Современные языки программирования позволяют это сделать. Но, по-моему, это фича, а не баг.
From:[info]http://users.livejournal.com/_vald_/
Date:June 23rd, 2009 - 02:25 am
(Link)
вот именно, но тонны словесной мишуры - это не бага, а фича. и придумана она всем известно, для чего.
From:[info]os80.livejournal.com
Date:June 22nd, 2009 - 08:25 pm
(Link)
Ну вот не вижу я тут Адской Жопы! Может, Вы упустили какую-либо важную информацию? Например, что поле field1 есть в индексе, который используется при выборке?
>Почти пустое - вызов другого метода другого объекта. И так раза три-четыре.
Не сыпьте соль на рану :-)
From:[info]silly_sad
Date:June 23rd, 2009 - 10:00 am
(Link)
адская жопа в том, что SELECT обращён к серверу БД, а это в общем случае хрен знает где (раз). Полей в таблице десяток а то и больше (два). Фетчить их все в тормознутом пхп в ассоциативные массивы (три). -- И всё это для того чтобы потом _ВЫБРОСИТЬ_ - вот вам главная жопа (как всегда в голове) просто брать и выбрасывать результаты вычислений
From:[info]os80.livejournal.com
Date:June 23rd, 2009 - 09:34 pm
(Link)
Какой кошмар! В запросе, выполняемом аж 100 раз в сутки.
База в конкретном случае расположена где-то рядом. Полей в таблице обычно столько, что они влезают в один сетевой пакет. Главные тормоза - чтение базой данных с диска и латентность сети. Если ПХП тормозит настолько, что становится заметен на фоне главных тормозов - нахрена его вообще использовать. Истории кода мы не знаем - может, там было две-три проверки на значения других полей. В общем, я бы так писать не стал, но что этот код - Адская Жопа без всяких оговорок, не согласен.
From:[info]silly_sad
Date:June 24th, 2009 - 05:55 am
(Link)
(молодой человек) вы несёте полную хуйню.
и не станете програмистом до тех пор (пока не поймёте (что так писать нельзя никогда, тоесть совсем, даже если бы этот запрос выполнялся 1 раз в год))

P.S.
У нас он выполняется 3 раза в секунду (но причина пиздеца не в этом)
From:[info]ponomarevmv.livejournal.com
Date:June 28th, 2009 - 10:29 pm
(Link)
перечитал свой комент ниже, просмотрел эту ветвь дискуссии.
и вот что хочу еще сказать. в данном случае жопа вообще во всем, что там написано, это верно.
но если попытаться разобрать отдельные части кода, как то - сам запрос, то получается, что не всегда "select * ..." является плохим решением так как если работаешь со всеми полями, меньше шансов ошибиться или запутаться. но в данном случае это катастрофа, что ни говори.
From:[info]http://users.livejournal.com/_vald_/
Date:June 23rd, 2009 - 02:23 am
(Link)
бывают также временные коды, которые впоследствии будут оптимизироваться
From:[info]silly_sad
Date:June 23rd, 2009 - 09:57 am
(Link)
ага! 4 символа в селект-листе сэкономили - временный код
From:[info]ponomarevmv.livejournal.com
Date:June 28th, 2009 - 10:18 pm
(Link)
это какая-то пост-гумманитарная психопатия - вытаскивать из таблицы запись (набор записей) полностью, а возвращать только одно значение. хрен знает, сколько там полей. вдруг тыща? хрен знает, сколько записей прошерстит запрос - вдруг миллион? я понимаю, что при выходе из функции, вроде как, все лишние данные должны уничтожаться и тд, но выделение памяти серверном для обработки запроса плюс "на клиенте" - где выполняется описанный код, может весьма нетривиально сказаться на общей работе.
ЗЫ кстати, а почему вынимаем массив? других вариантов нет? хэши (ассоциативные массивы) не изобрели? или это я последние 4 года в perl переиграл и уже не соображаю чего?
From:[info]asteel.livejournal.com
Date:June 30th, 2009 - 10:43 am
(Link)
Мне встречался уникум, который в качестве "select count(*) from sometable where blah=foo"
был кусок кода (цитирую по памяти):

From:[info]ponomarevmv.livejournal.com
Date:June 30th, 2009 - 10:15 pm
(Link)
вот это, хоть и уебищное пхп, и я даже в детстве так не писал, но вполне себе код. пока еще вполне.
там то речь о совсем других вещах. там показан пример о выборке * и возврате одного значения, чего не следует из приведенного тут пехепе.
здесь же в первичном определении запроса, а потом помещении его текста вместо переменной я вижу вполне банальный "копипаст наспех" - ну скопировал не то. суть не изменилась. там же ошибка куда серьезнее.
From:[info]silly_sad
Date:July 1st, 2009 - 09:25 am
(Link)
присмотритесь ВНИМАТЕЛЬНО! в этом коде выбирается вся таблица чтобы посчитать количество записей! это ещё хуже чем выбросить састь полей.
From:[info]ponomarevmv.livejournal.com
Date:July 1st, 2009 - 10:13 pm
(Link)
предлагаю повременить бороться с логикой вещей.
как я уже писал - из приведенного в этой ветке не следует, что с данными потом произойдет то же, что и в посте. ну понадобилось взять количество записей - вот и взяли. что делали потом - не пишут. а на верху - напротив, сразу же return.
или я что-то пропустил и закрытие "?>" означает не окончание блока, где после еще одного "<?" можно снова использовать данные, полученные в этом блоке? если че, я в пехепе не силен и вы меня поправляйте, ежели ошибся где. из языков для сайтописания специализируюсь лишь на перле.
From:[info]silly_sad
Date:July 2nd, 2009 - 07:40 am
(Link)
всё верно, просто неправильно оформленный пример - требует комментариев.
From:[info]ponomarevmv.livejournal.com
Date:July 3rd, 2009 - 12:02 am
(Link)
о том и речь. любой "пример в тексте" должен быть достаточно нагляден, чтобы не вызывать лишних вопросов и рассуждений.