<div dir="ltr"><div><div><div>Есть интересное видение ООП от джависта<br><a href="https://www.youtube.com/watch?v=lfdAwl3-X_c">https://www.youtube.com/watch?v=lfdAwl3-X_c</a><br></div><div>и его же про орм <a href="https://www.youtube.com/watch?v=ckjAWXJWZEY">https://www.youtube.com/watch?v=ckjAWXJWZEY</a><br><br></div>Про то, что большинство программистов думают процедурами, а не объектами.<br><br></div>А прок в маленьких классах - разделение труда. Каждый класс решает свою маленькую задачку и отвечает за ее решение.<br></div><div>Его можно лекго протестировать, рефакторить, понять, что он делает.<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">16 декабря 2016 г., 10:02 пользователь Konstantin S. Uvarin via Moscow-pm <span dir="ltr"><<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>></span> написал:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace">Приветствую!<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">  "На пару функций". Поехали.<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">1) Захват ресурса (временный файл, например).<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">ООП позволяет написать что-то в духе<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">    my $resource = My::Resource->new( %params );<br></div><div class="gmail_default" style="font-family:monospace,monospace">    my $fd = $resuource->file;<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">    # долго делаем что-то с $fd<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">    undef $resource; # вызвался деструктор и освободил ресурс за нас<br></div><div class="gmail_default" style="font-family:monospace,monospace">        # и это сработает независимо от того, вызвали мы return или die<br></div><div class="gmail_default" style="font-family:monospace,monospace">        # разве что на exec-е не сработает, или если  сигналом убили.<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">Хотя в тестовых скриптах, например, вызываю mktemp( ..., CLEANUP => 1 );<br></div><div class="gmail_default" style="font-family:monospace,monospace">и не парюсь. <br><br></div><div class="gmail_default" style="font-family:monospace,monospace">2) сериализация: <br><br></div><div class="gmail_default" style="font-family:monospace,monospace">my $codec = My::Serializer->new( %params );<br></div><div class="gmail_default" style="font-family:monospace,monospace">$codec->encode( ... );<br></div><div class="gmail_default" style="font-family:monospace,monospace">$codec->decode( ... );<br><br></div><div class="gmail_default" style="font-family:monospace,monospace">И тут мы (а) гарантируем, что параметры надо менять в ОДНОМ месте, и (б) гарантируем 100% раунд-трип данных (то есть, encode(decode(x)) == x). <br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">Опять же, есть куча мест, где freeze/thaw или encode_json/decode_json прекрасно работают. А вот попробуйте сконфигурировать (через local Data::Dumper::foo = ... ) Data::Dumper так, как удобно  Вам, а не ему - узнаете много новых выражений из уже известных Вам слов :) <br><br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div><div class="gmail_default" style="font-family:monospace,monospace">С уважением, <br></div><div class="gmail_default" style="font-family:monospace,monospace"><br></div></div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">2016-12-16 8:27 GMT+02:00 Максим Белозёров via Moscow-pm <span dir="ltr"><<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Объясните непрограммисту: что за прок от ООП в модулях на пару функций (пардон, методов)? Что за смысл многословно и со стрелочками писать что-то, что можно вызвать одним именем функции с парой параметров? Какая вообще польза в абстрагировании от входных данных? Они разные, блин, чего стоит абстрактная хня в вакууме? Не ООП ли это ради ООП?<br>
Вкусовщинка: какие способы общения со сторонними модулями предпочитаете?<br>
Может, вопросы глупы, но очень нужна пара осмысленных ответов. Больших проектов не пишу, а в мелких на ламерский взгляд от ООП одна порча. Помогите разобраться, хоть ссылками на годные материалы (можно en_US или en_UK).<br>
<span class="m_-5874379036447556196HOEnZb"><font color="#888888"><br>
--<br>
С наилучшими пожеланиями<br>
Максим Белозёров<br>
--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org" target="_blank">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
</font></span></blockquote></div><br><br clear="all"><br></div></div><span class="HOEnZb"><font color="#888888">-- <br><div class="m_-5874379036447556196gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div><div><font face="monospace,monospace">Konstantin S. Uvarin<br></font></div><font face="monospace,monospace">jabber: see <from><br></font></div><font face="monospace,monospace">skype: kuvarin<br></font></div><font face="monospace,monospace"><a href="http://github.com/dallaylaen" target="_blank">http://github.com/dallaylaen</a><br></font></div></div>
</font></span></div>
<br>--<br>
Moscow.pm mailing list<br>
<a href="mailto:moscow-pm@pm.org">moscow-pm@pm.org</a> | <a href="http://moscow.pm.org" rel="noreferrer" target="_blank">http://moscow.pm.org</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">С уважением,<br>Иван</div>
</div>