<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии на сайте DoK. Мысли из жизни.</title>
	<atom:link href="http://smarty.ru/?feed=comments-rss2" rel="self" type="application/rss+xml" />
	<link>http://smarty.ru</link>
	<description>Всё интересное, что не тянет на статью, но требует обсуждения.</description>
	<lastBuildDate>Tue, 23 Jun 2009 07:58:28 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
	<item>
		<title>Комментарий к записи PHP для сложных структур (DoK)</title>
		<link>http://smarty.ru/?p=14&#038;cpage=1#comment-27</link>
		<dc:creator>DoK</dc:creator>
		<pubDate>Tue, 23 Jun 2009 07:58:28 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=14#comment-27</guid>
		<description>В общем-то это надо тестировать. Речь идёт о случае, когда мы по конфигурации эту структуру создаём, это куча вызов и обработок в пользовательском коде. Дальше вопрос в эффективности десериализации.</description>
		<content:encoded><![CDATA[<p>В общем-то это надо тестировать. Речь идёт о случае, когда мы по конфигурации эту структуру создаём, это куча вызов и обработок в пользовательском коде. Дальше вопрос в эффективности десериализации.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи PHP для сложных структур (stanis)</title>
		<link>http://smarty.ru/?p=14&#038;cpage=1#comment-26</link>
		<dc:creator>stanis</dc:creator>
		<pubDate>Tue, 23 Jun 2009 06:47:28 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=14#comment-26</guid>
		<description>Кстати, Юра, тут вот ещё какой момент: чтение конфигурации может показаться раем в сравнении с поднятием из кэша сложной структуры сериализованных объектов.</description>
		<content:encoded><![CDATA[<p>Кстати, Юра, тут вот ещё какой момент: чтение конфигурации может показаться раем в сравнении с поднятием из кэша сложной структуры сериализованных объектов.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Конструкторы, поддержание состояния объекта (stanis)</title>
		<link>http://smarty.ru/?p=22&#038;cpage=1#comment-25</link>
		<dc:creator>stanis</dc:creator>
		<pubDate>Mon, 22 Jun 2009 22:35:19 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=22#comment-25</guid>
		<description>&gt; В примитивном варианте, у нас есть некоторый флаг 
&gt;isValid, который хранит то, проверены ли изменения. 
Может, не проверены ли, а правильно ли состояние объекта после изменений? Проверены ли — это логичнее было бы назвать isChecked.</description>
		<content:encoded><![CDATA[<p>&gt; В примитивном варианте, у нас есть некоторый флаг<br />
&gt;isValid, который хранит то, проверены ли изменения.<br />
Может, не проверены ли, а правильно ли состояние объекта после изменений? Проверены ли — это логичнее было бы назвать isChecked.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (DoK)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-18</link>
		<dc:creator>DoK</dc:creator>
		<pubDate>Mon, 25 May 2009 06:21:33 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-18</guid>
		<description>Про поддержку сайтов на LSF - если человек умеет хорошо программировать, понимает как это должно быть и видит ошибки и особенности конкретного фреймворка, то он может даже в рамках этих неблагоприятных условий писать код, который можно будет поддерживать, и который в целом будет хорошим. Это как пхп - в сущности не самый лучший язык, располагающий изначально к плохим решениям. Но зная эти его слабости, а также ряд &quot;нелогичностей&quot; можно разрабатывать неплохие приложения.</description>
		<content:encoded><![CDATA[<p>Про поддержку сайтов на LSF &#8211; если человек умеет хорошо программировать, понимает как это должно быть и видит ошибки и особенности конкретного фреймворка, то он может даже в рамках этих неблагоприятных условий писать код, который можно будет поддерживать, и который в целом будет хорошим. Это как пхп &#8211; в сущности не самый лучший язык, располагающий изначально к плохим решениям. Но зная эти его слабости, а также ряд &laquo;нелогичностей&raquo; можно разрабатывать неплохие приложения.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (stanis)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-17</link>
		<dc:creator>stanis</dc:creator>
		<pubDate>Tue, 19 May 2009 18:46:48 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-17</guid>
		<description>&gt;&gt; Поддерживать сайты на LSF увы надо, вопрос в том, чтобы не писать legacy код прямо сейчас :)
Что ты имеешь в виду?

Что касается правильного фреймворка: поживём — будем посмотреть.</description>
		<content:encoded><![CDATA[<p>&gt;&gt; Поддерживать сайты на LSF увы надо, вопрос в том, чтобы не писать legacy код прямо сейчас <img src='http://smarty.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Что ты имеешь в виду?</p>
<p>Что касается правильного фреймворка: поживём — будем посмотреть.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (DoK)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-16</link>
		<dc:creator>DoK</dc:creator>
		<pubDate>Tue, 19 May 2009 18:04:49 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-16</guid>
		<description>Ну собственно если бы не было swiss knives в коде и гемора с ними, не было бы мотивации писать сей текст :).

А быстрое и правильное обучение разработчиков - это отдельный вопрос, мы его уже обсуждали... Поддерживать сайты на LSF увы надо, вопрос в том, чтобы не писать legacy код прямо сейчас :). С платформой вообще сложности, так что правильный фреймворк безусловно нужен.</description>
		<content:encoded><![CDATA[<p>Ну собственно если бы не было swiss knives в коде и гемора с ними, не было бы мотивации писать сей текст <img src='http://smarty.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>А быстрое и правильное обучение разработчиков &#8211; это отдельный вопрос, мы его уже обсуждали&#8230; Поддерживать сайты на LSF увы надо, вопрос в том, чтобы не писать legacy код прямо сейчас <img src='http://smarty.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . С платформой вообще сложности, так что правильный фреймворк безусловно нужен.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (stanis)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-15</link>
		<dc:creator>stanis</dc:creator>
		<pubDate>Tue, 19 May 2009 17:46:36 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-15</guid>
		<description>&gt;&gt; когда родительский объект становится таким перочинным ножиком на все случаи жизни

Юра, не в обиду: где-то я такое уже видел. Я имею в виду swiss knives в коде, а не фразу, разумеется. ;-)

&gt;&gt; И очень хочется немного пробить барьер, чтобы люди раньше подняли голову и почитали то, как это должно быть, чтобы начали использовать ООП в полную силу.

Это понятно. Проблем тут пресс. И ключевой является мотивация. Если ты постоянно демонстрируешь реальные преимущества OOP/OOD — то люди будут учиться. Если нет, то… Вообще, когда я интенсивно общался со сверстниками, то была мода на «Совершенный код», а вот к «Паттернам проектирования» люди были равнодушны (ну, или около того). Вот как ты замотивируешь сотрудника на изучение принципов ООП(рограммирования) и паттернов ООП(роектирования), если ему надо поддерживать сайты на LSF?</description>
		<content:encoded><![CDATA[<p>&gt;&gt; когда родительский объект становится таким перочинным ножиком на все случаи жизни</p>
<p>Юра, не в обиду: где-то я такое уже видел. Я имею в виду swiss knives в коде, а не фразу, разумеется. <img src='http://smarty.ru/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>&gt;&gt; И очень хочется немного пробить барьер, чтобы люди раньше подняли голову и почитали то, как это должно быть, чтобы начали использовать ООП в полную силу.</p>
<p>Это понятно. Проблем тут пресс. И ключевой является мотивация. Если ты постоянно демонстрируешь реальные преимущества OOP/OOD — то люди будут учиться. Если нет, то… Вообще, когда я интенсивно общался со сверстниками, то была мода на «Совершенный код», а вот к «Паттернам проектирования» люди были равнодушны (ну, или около того). Вот как ты замотивируешь сотрудника на изучение принципов ООП(рограммирования) и паттернов ООП(роектирования), если ему надо поддерживать сайты на LSF?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (DoK)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-14</link>
		<dc:creator>DoK</dc:creator>
		<pubDate>Tue, 19 May 2009 17:37:05 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-14</guid>
		<description>В общем в терминах я действительно сильно плаваю, надо будет как-нибудь подтянуть для порядка. &lt;a href=&quot;http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование&quot; rel=&quot;nofollow&quot;&gt; http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование&lt;/a&gt; :)

По примеру с поднятием метода... как ты сказал, это ситуация в которой надо задуматься. Смешно она выглядит в крайнем варианте, когда родительский объект становится таким перочинным ножиком на все случаи жизни просто потому что все от него наследуются и им надо использовать этот функционал. Для таких вариантов есть куда более хорошие решения.

Основная задумка этого текста - я к сожалению часто встречаю людей которые думают теми категориями, которыми думал я на выходе из института. И очень хочется немного пробить барьер, чтобы люди раньше подняли голову и почитали то, как это должно быть, чтобы начали использовать ООП в полную силу.

А связка с образованием (по итогам jabber переписки) - у нас учат &quot;писать&quot; ОО-код, но не учат думать в ОО-парадигме, т.е. не учат ОО-проектированию. Это, как если бы учили как записывается цикл, что он перебирает числа от 0 до N, но не показали бы, что циклом можно решать алгоритмы, ходить по матрицам, спискам, вычислять что-то и т.п.</description>
		<content:encoded><![CDATA[<p>В общем в терминах я действительно сильно плаваю, надо будет как-нибудь подтянуть для порядка. <a href="http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование" rel="nofollow"> </a><a href="http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование" rel="nofollow">http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование</a> <img src='http://smarty.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>По примеру с поднятием метода&#8230; как ты сказал, это ситуация в которой надо задуматься. Смешно она выглядит в крайнем варианте, когда родительский объект становится таким перочинным ножиком на все случаи жизни просто потому что все от него наследуются и им надо использовать этот функционал. Для таких вариантов есть куда более хорошие решения.</p>
<p>Основная задумка этого текста &#8211; я к сожалению часто встречаю людей которые думают теми категориями, которыми думал я на выходе из института. И очень хочется немного пробить барьер, чтобы люди раньше подняли голову и почитали то, как это должно быть, чтобы начали использовать ООП в полную силу.</p>
<p>А связка с образованием (по итогам jabber переписки) &#8211; у нас учат &laquo;писать&raquo; ОО-код, но не учат думать в ОО-парадигме, т.е. не учат ОО-проектированию. Это, как если бы учили как записывается цикл, что он перебирает числа от 0 до N, но не показали бы, что циклом можно решать алгоритмы, ходить по матрицам, спискам, вычислять что-то и т.п.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи ОО программирование, как я его сейчас понимаю (stanis)</title>
		<link>http://smarty.ru/?p=44&#038;cpage=1#comment-13</link>
		<dc:creator>stanis</dc:creator>
		<pubDate>Tue, 19 May 2009 15:40:54 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=44#comment-13</guid>
		<description>Как обычно, начну с критики.
&lt;em&gt;Инкапсуляция есть средство объединения данных и поведения в класс и сокрытия реализации этого класс для предоставления пользователю только спецификации (интерфейса) класса&lt;/em&gt;. Нас так учили, и мне не кажется это неправильным. Заметь: тут не делалось акцента на сокрытии. Тут мы либо понимаем, что цель — предоставить пользователю спецификацию, в рамках которой он может общаться с объектами класса; либо скрываем всё, что надо и не надо, совершенно забыв о нашей основной цели. Если мы рассматриваем инкапсуляцию так, как это делаю я, а не так, как это делаешь ты, то очевидно, что интерфейсы состоят с инкапсуляцией в несколько иной связи, а именно: они не форма, а результат.

Про наследование сказано мало, поэтому мы, издавна привыкшие читать между строк, решим, что совпадаем в понимании (что &lt;em&gt;наследование есть средство описания нового класса на основе уже существующего (родительского), с заимствованием свойств и функциональности у родительского класса&lt;/em&gt;), и остановимся только на одной фразе: «Особенно прикольны рассуждения “этот метод нужен в 3 из 5 наследников, давайте поднимем его в родителя”».
А что смешного? Если этот метод нужен в трёх из пяти наследников, то на этом куске иерархии классов стоит остановиться подробнее в любом случае. Возможно, мы поднимем его в родителя, возможно, введём в иерархию родительский класс для этих трёх из пяти наследников, возможно вообще хорошо подумаем головой и перепишем нафиг этот кусок иерархии.

Полиморфизм. Тут да. Его надо рассматривать «на базе интерфейсов». Полноте, а разве мы не рассматривали на базе интерфейсов (спецификаций) инкапсуляцию и наследование? Можно быть ещё смелее, и сказать, что &lt;em&gt;полиморфизм есть множественная реализация одного и того же интерфейса&lt;/em&gt;.

Подытожим то, что я имею сказать не по бумажке.
Имхо, начиная мыслить в категориях ООП, нужно в первую очередь перейти на понимание различия понятий спецификации (интерфейса) и реализации. Это и есть тот самый «сдвиг парадигмы» (‟paradigm shift”), который нам обещали при переходе от концепции процедурного программирования к концепции ОО.</description>
		<content:encoded><![CDATA[<p>Как обычно, начну с критики.<br />
<em>Инкапсуляция есть средство объединения данных и поведения в класс и сокрытия реализации этого класс для предоставления пользователю только спецификации (интерфейса) класса</em>. Нас так учили, и мне не кажется это неправильным. Заметь: тут не делалось акцента на сокрытии. Тут мы либо понимаем, что цель — предоставить пользователю спецификацию, в рамках которой он может общаться с объектами класса; либо скрываем всё, что надо и не надо, совершенно забыв о нашей основной цели. Если мы рассматриваем инкапсуляцию так, как это делаю я, а не так, как это делаешь ты, то очевидно, что интерфейсы состоят с инкапсуляцией в несколько иной связи, а именно: они не форма, а результат.</p>
<p>Про наследование сказано мало, поэтому мы, издавна привыкшие читать между строк, решим, что совпадаем в понимании (что <em>наследование есть средство описания нового класса на основе уже существующего (родительского), с заимствованием свойств и функциональности у родительского класса</em>), и остановимся только на одной фразе: «Особенно прикольны рассуждения “этот метод нужен в 3 из 5 наследников, давайте поднимем его в родителя”».<br />
А что смешного? Если этот метод нужен в трёх из пяти наследников, то на этом куске иерархии классов стоит остановиться подробнее в любом случае. Возможно, мы поднимем его в родителя, возможно, введём в иерархию родительский класс для этих трёх из пяти наследников, возможно вообще хорошо подумаем головой и перепишем нафиг этот кусок иерархии.</p>
<p>Полиморфизм. Тут да. Его надо рассматривать «на базе интерфейсов». Полноте, а разве мы не рассматривали на базе интерфейсов (спецификаций) инкапсуляцию и наследование? Можно быть ещё смелее, и сказать, что <em>полиморфизм есть множественная реализация одного и того же интерфейса</em>.</p>
<p>Подытожим то, что я имею сказать не по бумажке.<br />
Имхо, начиная мыслить в категориях ООП, нужно в первую очередь перейти на понимание различия понятий спецификации (интерфейса) и реализации. Это и есть тот самый «сдвиг парадигмы» (‟paradigm shift”), который нам обещали при переходе от концепции процедурного программирования к концепции ОО.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Комментарий к записи Пара идей по отладке (dronord)</title>
		<link>http://smarty.ru/?p=30&#038;cpage=1#comment-11</link>
		<dc:creator>dronord</dc:creator>
		<pubDate>Wed, 25 Feb 2009 08:47:27 +0000</pubDate>
		<guid isPermaLink="false">http://smarty.ru/?p=30#comment-11</guid>
		<description>DoC. Отлично выражаешь мысли. Хорошим языком написано. Так держать!</description>
		<content:encoded><![CDATA[<p>DoC. Отлично выражаешь мысли. Хорошим языком написано. Так держать!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

