1. Perl / Говнокод #13110

    −146

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    sub new {
        my $self = shift;
        return $self if ref $self;
    
        unless (ref $self) {

    SOAP::Lite http://cpansearch.perl.org/src/PHRED/SOAP-Lite-0.716/lib/SOAP/Lite.pm

    package SOAP::Server;

    Запостил: Elvenfighter, 04 Июня 2013

    Комментарии (123) RSS

    • Юные падаваны, запомните - return в перле ненадёжный
      Ответить
    • было бы говном если бы в пользовательском классе такое было. это используется только для внутренних классов. хез его знает зачем так делают.
      Ответить
      • Выглядит так, будто хотят отличить вызов метода с передачей $self от обычного вызова функции, но почему-то делают всё наоборот.
        Ответить
        • Это же sub new, "конструктор". Судя по всему хотели нормально отработать ситуацию типа:
          sub method {
              my $self = shift->new;
          
              # там почти везде этот shift->new


          Конечно проглядывается идея со "статическими" методами типа: SOAP::Server->handle. Однако прямо в этом методе сразу после блока unless идёт еще какой-то код:
          sub new {
              my $self = shift;
              return $self if ref $self;
          
              unless ($self) {
                  # ...
              }
          
              # тут еще какой-то код, наверное автор изначально предполагал
              # безусловное исполнение этого куска


          Вообще - этом их SOAP::Lite всё делается через ТАКУЮ жопу, что порой начинаешь беспокоится о психическом здоровье авторов.
          Ответить
      • показать все, что скрытоvanished
        Ответить
    • if после инструкции... unless... У перлистов от синтаксического сахара не слипается?
      Ответить
      • А там обычный if без { блока } не работает. Вот и приходится писать правый. А вот от unless я бы и в жабе с крестами не отказался, полезный оператор.
        Ответить
        • Можно пример?
          Какой профит он несет серым сишкоблядям. Где без него трудно?
          Ответить
          • Условия, которые без применений законов де-Моргана смотрятся логичнее.
            Ответить
            • Не пойму. Всегда ведь можно поставить отрицание.
              Дайте простенький пример.
              Это как в бейсике do while/until. Может оно и хорошо, но не особо нужно.
              Ответить
              • видимо if (!(some long conditions to be refactored ever)) { ...
                => unless (same conditions to be refactored never) { ...
                Ответить
                • Так я и думал - сахар. Не вписывается в языковой минимализм.
                  И кода больше.
                  А слушались бы Тараса, писали бы как люди
                  if not (some long conditions to be refactored ever) then

                  Нагляднее выглядит. И читабельнее.
                  Ответить
                  • "Так я и думал - сахар. Не вписывается в языковой минимализм."

                    Перл прагматический язык - "минимализм" там и рядом не валялся.

                    Ларри Волл он просто еще и лигвистикой увлекается. Поэтому в Перле, как и в естественных языках есть "unless" и "it" (ака $_). Да же "or" работает в Перле как и в разговорной речи. Про Перловый "elsif" тоже какая-то байка была с завязкой на лингвистику и естественные языки.

                    "Нагляднее выглядит. И читабельнее."

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

                    По крайней мере у "unless" есть преимущестно что код можно как англиский текст читать.
                    Ответить
                    • >Нифига оно не читабельно.
                      Надеюсь вы не будете оспаривать тот факт что
                      >if not (some shit)
                      Гораздо ближе к "лингвистике и естественным языкам" чем
                      >if (!(some shit))

                      > Поэтому в Перле, как и в естественных языках есть
                      Its time to stop posting.

                      >Перл
                      >естественных языках
                      ВП. Судя по обилию всяких процентов, долларов, собачек, подчеркиваний и амперсандов, а также любви к регуляркам даже эзотерические кресты ближе к т.н. "естественным языкам".
                      Ответить
                    • >Перл
                      > что код можно как англиский текст читать.
                      Лооол, я уже 5 минут смеюсь.
                      Ответить
                      • смех без причины... обратись к доктору, может это уже лечат.

                        или это был тонкий сарказм на тему того что ты никогда хорошо написаного перла не видел? среднестатистический перловый скрипт по читабельности почти не отличается от среднестатистического С/С++.
                        Ответить
                        • >среднестатистический перловый скрипт по читабельности почти не отличается от среднестатистического С/С++.

                          Да. Об том-то и речь что читать это непросто. Притом что выше я отметил, что имхо, кресты-таки читаемей.
                          Ответить
                          • "Притом что выше я отметил, что имхо, кресты-таки читаемей."

                            Это дело привычки. Подавляющее большинство людей которые жалуются на читабельность Перла (А) не знают синтаксиса языка и (Б) из примеров кода видели только победителей конкурсов однострочников.

                            Типичный Перл читаем как и С++. Хороший Перл, специально заточеный под читаемость, более читаем чем С++ просто потому что плотность кода в Перле выше. Более того, в отличии от С++, код в Перле можно заточить под читаемость намного чаще, потому что boilerplate кода на порядок меньше.
                            Ответить
                            • > Хороший Перл, специально заточеный под читаемость, более читаем чем С++ просто потому что плотность кода в Перле выше.

                              Тогда читабельнее всего - бинарники.
                              Ответить
                              • Запакованные в архив!
                                Ответить
                              • Под плотностью понимается соотношение полезных символов с общим кол-вом. Например, в большинстве случаев можно выкидывать круглые скобки при вызове функций/методов. Нет хрени типа String[] arr = new String[]; - просто объявил my @arr и пользуйся
                                Ответить
                                • Ну вывод типов и в статическом сисярпе есть - написал var arr = new String[]; и радуйся. Только жаваебы, как обычно, соснули хуйца, но им не привыкать.
                                  Ответить
                                • >> просто объявил my @arr и пользуйся
                                  Но вот только одна проблема - с сисярпе, крестах и даже хацкиле автовывод + статическая типизация.
                                  То бишь проверка типов.
                                  Ответить
                                • показать все, что скрытоДействительно, синтаксис C-подобных яхыков избыточен
                                  Ответить
                            • >boilerplate кода на порядок меньше.
                              По сравнению с ЦПП?

                              А как же фирменные фишки перла?
                              - 1; в конце модуля, иначе не будет работать
                              - ООП работает хуй пойми как. Как там класс обьявить? Что надо благославлять?
                              - Аргументы функции через shift вместо обьявления параметров. Или же через sub func { (param1, param2) = @_; ... }
                              - Уплощение списков.
                              @list1 = (3,4);
                              @list2 = (1,2, @list1);

                              В list2 будет (1, 2, 3, 4)

                              И прочие вещи, взрывающие мозг людям, пришедшим с нормальных языков, а не какого-то чудовища из 80-х.
                              Ответить
                              • "1; в конце модуля, иначе не будет работать"

                                конечно оно будет работать. возврат false означает что модуль не смог по каким-то причинам загрузится.

                                "Уплощение списков." - не ну это уже фича. причем часто весьма полезная. и уплощаются не только списки, то также и хэши.

                                "- Аргументы функции через shift вместо обьявления параметров. Или же через sub func { (param1, param2) = @_; ... }"

                                это и называется объявлением параметров. синтакс другой, но теже яйца. если сильно хочешь, то можно даже сделать и именованые параметры, передавая хэш(и): `sub aaa { my %arg = @_; "$arg{param1}"; }; aaa(param1 => 1, param2 => 2); aaa(%saved_args);` - и будет вам даже передача параметров в независимости от порядка передачи аргументов.

                                "- ООП работает хуй пойми как. Как там класс обьявить? Что надо благославлять?"

                                просвящайтесь, молодой человек:
                                http://onyxneon.com/books/modern_perl/
                                в частности, CPAN -> Moose.

                                "И прочие вещи, взрывающие мозг людям, пришедшим с нормальных языков, а не какого-то чудовища из 80-х."

                                нет такой вещи как "нормальные языки." просто не существует. "волков боятся, в лес не ходить." если multi-paradigm языков не тянете, если все что not-С-like пугает, то продолжайте сидеть на своей Java и ни в коем случае не смотрите на другие языки. а то вдуг они вам и на самом деле "мозг взорвут."

                                в конце концов, все ваши жалобы можно объяснить простым невежеством. большинство "жалоб" описано в самой официально перловой доке - perldoc perl - и более того описано что с этим можно делать и каких эффектов этим можно достигать.

                                хотя сейчас защищать перл большого смысла нету. но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
                                Ответить
                                • >конечно оно будет работать. возврат false означает что модуль не смог по каким-то причинам загрузится.
                                  Это какая-то перлоебская логика, которую я в книжках долгое время не мог найти и не понимал, хуле мой модуль не работает.

                                  >просвящайтесь, молодой человек:
                                  На англицком и деньги еще за это платить?
                                  >modern_perl
                                  Я им занимался году в 2005-2007, мне хватило.

                                  >нет такой вещи как "нормальные языки."
                                  Есть понятие "ожидаемое поведение", а также "явное лучше неявного". Перл - как английский язык, на каждое правило по 20 исключений. <STDIN> читает в $_, но только, если он в цикле.
                                  undef $/;
                                  $file = <FILE>;

                                  Читает весь файл в $file. Внимание, вопрос: как это работает (да, это достойно отдельного говнокода)? Да, говно можно написать на любом языке, но там хоть будет понятно, что такое $/.
                                  Ответить
                                  • "Внимание, вопрос: как это работает?"

                                    как работает '<>' это точно в каком-то базовом туториале описано. и им не обязательно пользоватся - можно пользоватся OO интерфейсом - perldoc IO::Handle

                                    про $/ само собой разумеется, как и про все остальные встроеные переменные, описано в 'perldoc perlvar'. в 'use English', переменная называется $INPUT_RECORD_SEPARATOR

                                    " (да, это достойно отдельного говнокода)"

                                    никакое это не ГК. просто кто-то поленился выучить язык прежде чем им начать пользоватся.
                                    Ответить
                                    • >как работает '<>' это точно в каком-то базовом туториале описано.
                                      Описано, я и не спорю, просто поведение отличается от ожидаемого, и это - типичный случай.

                                      >в 'use English', переменная называется $INPUT_RECORD_SEPARATOR
                                      Да, только автор это то ли не знал, то ли не захотел пользоваться, а теперь мне приходится читать эту хрень. Perl с готовностью дал ему эту возможность.

                                      >просто кто-то поленился выучить язык прежде чем им начать пользоваться.
                                      Это и есть классический ГК.
                                      Ответить
                                      • "Описано, я и не спорю, просто поведение отличается от ожидаемого, и это - типичный случай."

                                        ты что дебил? я серьезно спрашиваю. у тебя тривиальные проблемы с чтением и пониманием прочитаного.

                                        или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl. и потом раскажи нам что ты именно ожидаешь по тому как код выглядит - и что он на самом деле делает. и поплачь, на жизнь пожалуйся.

                                        это твоя личная проблема что у тебя мозги застряли на Сишном синтаксисе и ничего другого не способны воспринимать.
                                        Ответить
                                        • Ну все, сдулся перлоеб. Зря я тебе плюсанул.

                                          >или. или сравни с реализацией аналогичного по функциональности кода, на пример, в хаскеле. или в лиспе. или в эрланге. или в tcl.
                                          Что ты мне сравниваешь императивный язык с функциональной хуйней? Только не надо мне рассказывать, что перл - дохуя функциональный язык, не функциональнее питона.
                                          Ответить
                                          • "Ну все, сдулся перлоеб."

                                            не ну я могу на перле по быструхе набросать генератор ответов. потому что ты долбишься в "мне не нравится синтакс и я не буду читать доку" в каждом комментарии. и как следствие ответы всегда одинаковые: "долбоёб, учи мат часть."
                                            Ответить
                                            • Я читал доку. Мне не нравится, когда язык представляет из себя минное поле. Нахуя мне тратить свое время на изучение граблей, если я могу его потратить с бОльшим толком?

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

                                              Синтаксис без объявления параметров функции - гавно. Можно залатать, но зачем?

                                              Если язык А содержит меньше граблей, чем язык Б, нахуя нужен язык Б?

                                              Скажи честно, на перле пишут легаси и по инерции, как в рашке на делфи?

                                              Вроде хорошо дискутировали, пока ты хамить не начал.

                                              Ответ на твой ответ - от того, что я выучу матчасть, перл перестанет быть говном?
                                              Ответить
                                • Уплощение списков может вызвать ядерную ненавиcть (и вызвало у меня, когда я стал на эти грабли). Фишка-хуишка, просто это неожиданное (для нормального человека) поведение.

                                  >это и называется объявлением параметров.
                                  Нет, это называется КОСТЫЛЬ, эмуляция. Т.е. сделать можно, но через вещи, для этого изначально не предназначенные и надо знать как. Как и try...catch через die. Классический КОСТЫЛЬ.

                                  А как же знаменитый TMTOWTDI? Да, для того, чтобы писать код, это удобнее - надо знать один из многих разнообразных способов, зато, чтобы прочесть код - надо знать их все! Смотри пример выше с чтением файла.

                                  >в конце концов, все ваши жалобы можно объяснить простым невежеством
                                  Можно. Перл гуру эти грабли будет знать наизусть. Только как часто приходится что-то делать на языках, которые знаешь не от и до? Сравни, насколько надо знать язык, чтобы сделать модуль/класс на питоне и на перле. Мне кагбе нахрен не нужно быть гуру языка, чтобы без косяков написать / прочитать что-то элементарное. Сколько бы людей водили машину, если бы для этого надо было учиться 3-4 года?

                                  Ах, да, еще my $var1, $var2 обьявит только $var1.
                                  (1+2) - получим список, поставив лишние скобки. В питоне хоть запятую добавить надо.

                                  Перл - это фрактал костыля и граблей. Грабельный костыль.

                                  > но устаревает не потому что синтакс у него не как у жабы или С, а потому что много современных фич просто либо отсутствуют, либо криво прикручены.
                                  Лол, о чем мы тогда спорим? :)

                                  Основных проблем у него три: устаревший, неочевидный и TMTOWTDI (единственный профит от изучения перла - чтобы понять, что TMTOWTDI по большому счету - хуйня). Чего мне из него реально не хватает в питоне - это use strict.
                                  Ответить
                                  • "Перл гуру эти грабли будет знать наизусть."

                                    никто не знает эти все мелочи наизусть. почти все девелоперы/комманды девелоперов останавливаются на некотором стиле и пользуются им.

                                    "Лол, о чем мы тогда спорим? :)"

                                    мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловатся.

                                    по твоим жалобам могу сказать что тебе лучше сидеть либо на жабе либо на питоне. multi-paradigm языки для тебя однозначно слишком много.

                                    "Чего мне из него реально не хватает в питоне - это use strict."

                                    и use warnings.
                                    Ответить
                                    • >никто не знает эти все мелочи наизусть. почти все девелоперы/комманды девелоперов останавливаются на некотором стиле и пользуются им.
                                      Суть такова:
                                      - Перл - куча замаскированных граблей, которые надо знать.
                                      - Другие языки - неочевидного поведения гораздо меньше.

                                      >мы не спорим. ты просто жалуешься на неправильные вещи. вещи про которые можно в любом языке жаловаться.
                                      В любом языке есть свой кал (поэтому я не очень люблю "Фрактал плохого дизайна" - похожую херню можно написать про любой язык, с которым имеешь дело больше месяца), но в перле его намного больше среднестатистической величины.

                                      >multi-paradigm языки
                                      И какие же в перле парадигмы и каких из них нет в питоне?

                                      >и use warnings.
                                      Мне нужно именно отдельное объявление переменных. А use warnings мне к чему?
                                      Ответить
                                    • Удивительно, но anonimb... впервые начал поднимать интересные темы. Честно говоря, в вашем споре я даже на его стороне.

                                      Года четыре назад я тоже выбирал, какой скриптовый язык выучить, колебался между perl и python. Писал одинаковые скриптики на обоих. Выяснил, что размер и быстродействие моих программ примерно одинаковые. Но при этом программы на python выглядят как псевдокод, а программы на perl требуют немало вдумчивости для написания и прочтения.
                                      Мне нравятся философия, читаемость и доступность python. При этом язык весьма глубок и позволяет кратко и понятно писать очень впечатляющие вещи. Но и программистов на perl можно понять - мало кто хочет расставаться с тем, на освоение чего ушли сотни часов, что впервые сдвинуло ему парадигму, и что, в принципе, вполне решает поставленные задачи небольшим количеством букв.

                                      А по поводу мультипарадигменности это вы зря. Python практически всё из коробки поддерживает. Разве что concurrent не идёт в комплекте (как в erlang/go), но этого и у perl нет.
                                      Ответить
                                      • > Удивительно, но anonimb... впервые начал поднимать интересные темы. Честно говоря, в вашем споре я даже на его стороне.
                                        Как не странно, я тоже его плюсанул, т.к. у меня точно такое же мнение - перл это write-only язык ограниченного применения. Сейчас, конечно, меня начнут обвинять в том, что я дескать не осилил перл, не понял всех заложенных в него возможностей...

                                        Но мне нравится перл, нравится писать на нем короткие скрипты для обработки текстовичков. Но для чего-то больше 100 строк или недели поддержки мне его юзать просто страшно.

                                        Классы - обряд совокупления пакета и хеша и посвящения их в классы.

                                        На массивы из массивов или хешей слабонервным и беременным лучше не смотреть. Да, я умею их юзать. Но в других языках они почему-то смотрятся намного адекватней.

                                        Объявление функций совершенно неадекватное. Почему я должен писать срань с распихиванием переменных по переменным в каждой функции? Не ну я понимаю, что это дает гибкость... Но если в других местах перл пытается быть более кратким, то почему тут мне нужно писать больше?
                                        Ответить
                                      • Я впервые столкнулся с перлом когда нужны были регулярные выражения поддерживающие Юникод. Для какой-то одноразовой работы. Вот после этой попытки я решил "оставить Перл на потом".
                                        Что интересно: жена друга по работе (она в исследователькой лаборатории работала) должна была что-то писать на Перле, ну и т.как вообще не программист, то иногда мне тоже доводилось заглядывать в ее код... Ну, только наверное потому, что код был очень наивным, и безо всяких экзотических наворотов, проблем с пониманием особо не возникало... но потом она перешла работать в другое место, где ПО использовало Питон.

                                        Немножко обнадежившись небольшим опытом, я как-то устанавливал Багзилу, и чего-то там не срасталось. Я решил на удачу заглянуть в исходники - все таки, я хоть пару раз в жизни имел дело с языком. Вот с тех пор я и использую Perl-sensitive sunglasses
                                        http://www.emacswiki.org/emacs/PerilSensitiveSunglasses
                                        Ответить
                                        • >PerilSensitiveSunglasses
                                          Лол, это такое тонкое "развидеть это"?
                                          Ответить
                                          • На сколько я понимаю, это отсыл к Автостопом по галактике. Там вроде такие очки были :)
                                            Ответить
                                      • > Честно говоря, в вашем споре я даже на его стороне.

                                        И я тоже... Просто недолюбливаю пёрл.

                                        Да и тут многим что питон ближе пёрл, при прочих равных - скриптовость, скорость исполнения итд.
                                        Ответить
                                      • >Удивительно, но anonimb... впервые начал поднимать интересные темы.

                                        Пример того как Говнокод.ру облагораживает человека.
                                        Ответить
                                      • > Удивительно, но anonimb... впервые начал поднимать интересные темы.

                                        На которые он натолкнулся в процессе написания говноботов?
                                        Ответить
                                  • > Сколько бы людей водили машину, если бы для этого надо было учиться 3-4 года?

                                    Чтобы научиться водить машину нужно минимум 3 года.
                                    Ответить
                                    • Лишнехромосомненько.
                                      а вообще давайте лучше пятилетку, чтобы был порррядочек, а дефицита не было
                                      Ответить
                                      • Во

                                        Люди в Советском Союзе — я уже рассказывал, что у них отличное чувство юмора, но кроме того — они довольно критично относятся к существующему строю. Этот я уже рассказывал, Билл, тебе придётся послушать его ещё раз — я его рассказывал в машине. Горбачёву не рассказывал.

                                        Знаете, в Советском Союзе за автомобилями очередь, 10 лет. Машина есть только у одной семьи из 7-ми в СССР. Ждать нужно 10 лет — это целая процедура, ты готовишься купить автомобиль, и тебе необходимо внести деньги авансом. И вот один товарищ... Эти шутки они рассказывают друг другу — этот мужик выложил деньги, и тот, кто занимался этим вопросом, сказал ему — отлично, приходи через 10 лет за своей машиной. И он спросил: "утром или вечером?" (смех в зале). А человек за прилавком спрашивает — "какая разница, это же через 10 лет!" — "Ну, просто утром сантехник должен прийти
                                        Ответить
                            • >Хороший Перл, специально заточеный под читаемость, более читаем чем С++, заточеный под компилятор.
                              Починил. А обычный перл как читается?
                              Ответить
                              • как напишешь, так и прочитаешь)))
                                Ответить
                                • Дело даже не в том, что на перле можно написать говнокод. И даже что это проще сделать, чем на других языках. Нормально написанный код на перле смотрится как говнокод!
                                  Ответить
                      • о. нашел. валидный perl v2:
                        BEFOREHAND: close door, each window & exit; wait until time.
                        	open spellbook, study, read (scan, select, tell us);
                        write it, print the hex while each watches,
                        	reverse its length, write again;
                        	 kill spiders, pop them, chop, split, kill them.
                        	 	unlink arms, shift, wait & listen (listening, wait),
                        sort the flock (then, warn the "goats" & kill the "sheep");
                        	kill them, dump qualms, shift moralities,
                        	 values aside, each one;
                        	 	die sheep! die to reverse the system
                        	 	 you accept (reject, respect);
                        next step,
                        	kill the next sacrifice, each sacrifice,
                        	 wait, redo ritual until "all the spirits are pleased";
                        	do it ("as they say").
                        do it(*everyone***must***participate***in***forbidden**s*e*x*).
                        return last victim; package body;
                        	exit crypt (time, times & "half a time") & close it,
                        	 select (quickly) & warn your next vicitm;
                        AFTERWORDS: tell nobody.
                        	wait, wait until time;
                        	 wait until next year, next decade;
                        	 	sleep, sleep, die yourself,
                        	 	 die at last
                        
                        # Larry Wall
                        # [email protected]

                        или ты щас тут начнешь жаловатся что англиского не знаешь? :D
                        Ответить
                        • Ага. Щас поищу перловый аналог ioccc и возьму оттуда что-то валидное.
                          #!/usr/bin/perl
                          use warnings;
                          use strict;
                                 my          
                                ($j,$        
                             a,$p,$h);$      
                             j=sub{print(    
                            chr($p+=$a->[$   
                            h++]));$j};;;$a  
                           =[0,        split 
                           "[:         \n]+", 
                          q/43         -002:1
                          -084         065:13
                          0001         000005
                          -0012        -00003
                          000013   -82 00048 
                          21:13:-6.00:-76:72 
                           -007.:02:00008.00 
                            :::-6.00:::013  
                            -70:3::-70:.64   
                              /];$p=0x4a     
                                ;;$h=0;      
                          $j->()->()->()->()->()->()->()->()->()->()->()->()->()->()->()->()->()
                          +->()->()->()->()->()->()->()->();
                          Ответить
                      • Перл, кстати, известен тем, что к нему нет БНФ грамматики, и правила в нем "не регулярные" - так что в этом смысле он ближе к естесственным языкам, чем, к примеру, Ява.
                        Ответить
                        • Есть
                          symbol => #0..#ffff
                          code => code symbol | symbol


                          как-то так, я обозначения не очень помню
                          Ответить
                          • Хехе, к сожалению, нет. Такая грамматика например, не может описать вещи как "нонсенс", или "ирония". Т.е. ситуации, когда синтаксис валидный, но либо бессмысленный, либо значит не то, что он значит по правилам, которые сам же определяет. Пример такого предложения: "я не лгу". Для того, чтобы описать это нужно, как минимум, две независимые грамматики применять к одному продукту.
                            Ответить
                    • показать все, что скрытоvanished
                      Ответить
                  • показать все, что скрытоvanished
                    Ответить
              • показать все, что скрытоvanished
                Ответить
                • показать все, что скрытоЯ не понимаю почему все говорят о перле.

                  Perl был замечатльным языком. Наверняка в 1986 году делать на нем экстракшен и репорт было куда приятнее, чем на седе, авке и борн шеле, и Ларри не виноват что на нём стали писать лайвджорналы.

                  Но самое главное это то, что перл уже лет 10 как ушел в закат. Что толку тут его обсуждать?
                  Ответить
          • мне в java иногда приходится писать if (!(obj instanceof Class1) &&!(obj instanceof Class2)) { ... }
            в такие моменты вспоминаю что в перле такой отрицание-скобко-ебли нету:
            и хотелось бы в жабе иметь такое
            unless (obj instanceof Class1 || obj instanceof Class2) {...}
            Ну это всё субъективно, мне так удобнее :)
            Ответить
            • public static boolean aint(Object obj, Class<?> class_) {
                  return obj == null || !(class_.isAssignableFrom(obj.getClass()));
              }
              http://ideone.com/Y9AYnE
              Ответить
            • Зачес столько отрицаний? Де Моргана на вас нет.
              if ( !(obj instanceof Class1 || obj instanceof Class2) )
              Ответить
              • А так, имхо, еще хуже. Я де-моргана применяю всегда в обратную сторону - чтобы избавиться от ! перед большими блоками.Т.к.
                if (!(obj instanceof Class1) &&!(obj instanceof Class2))
                для меня легче читается из-за большей локальности, нежели
                if ( !(obj instanceof Class1 || obj instanceof Class2) )
                Вот тут unless(...) вместо if (!(...)) как раз был бы удобнее и нагляднее.
                Ответить
                • >Вот тут unless(...) вместо if (!(...)) как раз был бы удобнее и нагляднее.
                  С этим соглашусь. Если бы скобки вокруг унарных операторов в условиях разрешили бы не ставить, было бы читаемей и с обычным if:
                  if ! (obj instanceof Class1 || obj instanceof Class2)
                  Ответить
                  • >Если бы скобки вокруг унарных операторов в условиях разрешили бы не ставить
                    Так это сишкоблядская проблема. И заключается она в парсинге.
                    Я тут http://govnokod.ru/13110#comment179640 не зря then написал.
                    Без него трудно понять где заканчивается условие и начинается код ветки. В питоне эту роль выполняет двоеточие и форматирование.
                    А ведь в тернарниках скобки не обязательны, потому что ? выступает в роли разделителся.

                    То есть следует определится что именно вы не хотите писать: скобки, then или еще-какой разделитель.
                    Ответить
                    • И смириться с тем, что какой-то да все равно придется писать.
                      Ответить
                      • Ну да. Математическая необходимость.
                        Хотя если выпилить ifы без операторных скобок, то { могла бы играть роль разделителя.
                        Но и в этом случае надутся недовольные - даже для 1-ой строчки надо писать
                        if !(someCond)
                        {
                           doSomething();
                        }


                        Именно поэтому всеобщее счастье на Земле невозможно.
                        Ответить
                        • > выпилить ifы без операторных скобок
                          В Go так и сделали, причём фигурная скобка должна быть приклеена к ифу в стиле java, всего одна лишняя строка.
                          Ответить
                          • И правильно. Хоть я и сам грешу писать без скобок, потому что ленивый. Но поддерживаю сиё начинание, ибо обычно вылазит граблями. Да и всё равно их потом в половине случаев ставишь.

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

                  Экстракт вариэбл надо делать
                  Ответить
              • >Де Моргана
                Кто такой, чем знаменит?
                Ответить
        • Perl Best Practices, между прочим, не рекомендует unless.
          Ответить
        • показать все, что скрытоvanished
          Ответить
        • показать все, что скрытоwh0cd921510 <a href=http://viagrageneric2017.com/>viagra online</a>
          Ответить

    Добавить комментарий