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

    −119

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    sub mainMenu {
    	if ($action eq "addtab" && $iamadmin) { require "$sourcedir/AdvancedTabs.pl"; &AddNewTab; }
    	elsif ($action eq "edittab" && $iamadmin) { require "$sourcedir/AdvancedTabs.pl"; &EditTab; }
    	elsif ($action ne "") {
    		if ($action eq "search2") {
    			$tmpaction = "search";
    		} elsif ($action eq "favorites" || $action eq "shownotify" || $action eq "im" || $action eq "imdraft" || $action eq "imoutbox" || $action eq "imstorage" || $action eq "imsend" || $action eq "imsend2" || $action eq "imshow" || $action eq "profileCheck" || $action eq "myviewprofile" || $action eq "myprofile" || $action eq "myprofileContacts" || $action eq "myprofileOptions" || $action eq "myprofileBuddy" || $action eq "myprofileIM" || $action eq "myprofileAdmin" || $action eq "myusersrecentposts") {
    			$tmpaction = "mycenter";
    		} elsif ($action eq "messagepagetext" || $action eq "messagepagedrop" || $action eq "threadpagetext" || $action eq "threadpagedrop" || $action eq "post" || $action eq "notify" || $action eq "boardnotify" || $action eq "sendtopic" || $action eq "modify") {
    			$tmpaction = "home";
    		} elsif ($action eq "guestpm2") {
    			$tmpaction = "guestpm";
    		} else { $tmpaction = $action; }
    
    	} else {
    		$tmpaction = "home";
    	}
    
    	$tab{'home'} = qq~<span |><a href="$scripturl" title = "$img_txt{'103'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'103'}$tabfill</a></span>~;
    	$tab{'help'} = qq~<span |><a href="$scripturl?action=help" title = "$img_txt{'119'}" style="padding: 3px 0 4px 0; cursor:help;">$tabfill$img_txt{'119'}$tabfill</a></span>~;
    	if ($maxsearchdisplay > -1) {
    		$tab{'search'} = qq~<span |><a href="$scripturl?action=search" title = "$img_txt{'182'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'182'}$tabfill</a></span>~;
    	}
    	if (!$ML_Allowed || ($ML_Allowed == 1 && !$iamguest) || ($ML_Allowed == 2 && $staff) || ($ML_Allowed == 3 && ($iamadmin || $iamgmod))) {
    		$tab{'ml'} = qq~<span |><a href="$scripturl?action=ml" title = "$img_txt{'331'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'331'}$tabfill</a></span>~;
    	}
    	if ($iamadmin) {
    		$tab{'admin'} = qq~<span |><a href="$boardurl/AdminIndex.$yyaext" title = "$img_txt{'2'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'2'}$tabfill</a></span>~;
    	}
    	if ($iamgmod) {
    		if (-e "$vardir/gmodsettings.txt") { require "$vardir/gmodsettings.txt"; }
    		if ($allow_gmod_admin) {
    			$tab{'admin'} = qq~<span |><a href="$boardurl/AdminIndex.$yyaext" title = "$img_txt{'2'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'2'}$tabfill</a></span>~;
    		}
    	}
    	if ($sessionvalid == 0 && !$iamguest) {
    		my $sesredir;
    		unless (!$testenv || $action eq "revalidatesession" || $action eq "revalidatesession2") {
    			$sesredir = $testenv;
    			$sesredir =~ s/\=/\~/g;
    			$sesredir =~ s/;/x3B/g;
    			$sesredir = qq~;sesredir=$sesredir~;
    		}
    		$tab{'revalidatesession'} = qq~<span |><a href="$scripturl?action=revalidatesession$sesredir" title = "$img_txt{'34a'}" style="padding: 3px 0 4px 0;">$tabfill$img_txt{'34a'}$tabfill</a></span>~;
    	}
    
    // далее мало что меняется в стиле...

    Формируем меню...

    Запостил: Arigato, 11 Ноября 2010

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

    • то есть, вы утверждаете, что если ЭТО переписать на пхп - говна станет меньше?
      Ответить
      • При чем тут php, код же на перле?
        А если говорить о том, как надо, то надо тут все с 0 переписать.
        Ответить
        • вы уже известны тем, что в нескольких тредах доказывали, что пых лучше перла. поэтому сарказм.

          а вообще да, сабж нужно не только переписывать, но и перепроектировать
          Ответить
          • показать все, что скрытоЯ не считаю php идеалом, я лишь считаю, что перл не лучше, а то и хуже. Т.е. в защиту php я не выступаю - говно оно, как и перл.
            Ответить
            • Не существует ничего идеального. Везде есть плюсы и минусы, но по моему мнению язык не может быть говном, а может быть лишь инструментом для его (говна) создания.
              Ответить
              • Все же и язык может быть говном, т.к. его так же люди создают, а людям свойственно говно получать.
                Ответить
              • инструмент таки должен быть удобен. если я не смогу взять в руки нож, не порезавшись, из-за отсутствия удобной ручки, то значит говно именно этот нож.
                Ответить
      • У этого продукта имеется и PHP порт: http://sourceforge.net/projects/yabbse/
        Ответить
        • Сомневаюсь, что перл-программист мог его переписать на php без говнокода. Наверное, к имеющемуся добавили еще и новый.
          Ответить
          • А зачем перл-программисту могло это понадобиться?
            Ответить
            • Да потому, что форум на php более востребован. Вот и решили переписать.
              Ответить
              • PHP-портом занимались PHP-программисты, причем отнюдь не глупые. http://www.simplemachines.org/community/index.php?topic=208875.0
                Ответить
    • Вот именно чтоб не было такого кода и придумали шаблонизаторы, язык я думаю тут ни при чем
      Ответить
      • Язык, может, и ни при чем. Но были тут громкие заявления неких анонимусов, что все говнокодеры исключительно на php, а на perl все прямо как в сказке. Розовые очки не жмут?
        Ответить
        • Скажем так если процент говнокодеров примерно одинаков для всех языков, то в силу того что на пхп пишут гораздо больше чем на перле, то и говнокодеров пыха гораздо больше, а не перле пишут гораздо меньше., поэтому и кол-во говнокодеров меньше,
          поэтому количеством говнокодеров на перле по отношению к говнокодерам на пхп мало и им можно пренебречь и отбросить , вот отсюда и такие заявления ))))
          Надеюсь я примерно объяснил ситуацию, и вы больше не будете принимать близко к сердцу выкрики анонимов )))
          Ответить
          • > Скажем так если процент говнокодеров примерно одинаков для всех языков, то в силу того что на пхп пишут гораздо больше чем на перле, то и говнокодеров пыха гораздо больше, а не перле пишут гораздо меньше., поэтому и кол-во говнокодеров меньше,

            С этим я не спорю, если рассматривать абсолютное количество говнокодеров, то да, на php их существенно больше, т.к. и кода на php существенно больше. А вот в относительном значении количество говнокодеров одинаково, что на php, что на perl.
            Ответить
          • Вау, прямо спокойная дискуссия, пришли к консенсусу, никакого холивара с пеной у рта, приятно смотреть=)
            Ответить
            • Ждем анонимусов в ветке.
              Ответить
              • я не буду кормить Вас, тролль)
                я много раз говорил: написать говно можно на чем угодно, но на некоторых языках написать НЕговно сложнее, чем на других. В частности -- на php;)
                Ответить
                • > но на некоторых языках написать НЕговно сложнее, чем на других. В частности -- на php;)

                  Я бы так выстроил лесенку говноязыков:
                  1. bat-файлы
                  2. perl
                  3. php
                  Ответить
                  • тоесть сначала говнокодер осваивает php, потом -- perl, и наконец -- bat файлы?
                    Ответить
                    • Это не порядок освоения, а порядок говноязычности в порядке убывания.
                      Хотите туда еще и Basic на свое усмотрение на любую позицию вставьте, я бы его между bat и perl поставил.
                      Ответить
                  • бля, опять батники приплёл

                    нужна помощь программиста!!! у меня между стулом и клавиатурой что-то застряло!!!
                    Ответить
                  • bat файлы не виноваты. bat файлы -- это все то же, что бы вы написали ручки. Все претензии к command.com & cmd.exe, но пока он не устарел его огого как хватало

                    однако, я понимаю, что вам в них не хватает мышки, окошек, кнопочек и автокомплита = )
                    Ответить
                    • > однако, я понимаю, что вам в них не хватает мышки, окошек, кнопочек и автокомплита = )

                      А вам там всего хватает, пишете полноценные программы на них?
                      Мне вот приходилось на них писать весьма крупные поделки, т.к. работал некоторое время в организации, где сторонний софт был строго запрещен, а нестандартный софт для работы был нужен. Вот батники и были выходом, т.к. средства стандартные виндовские.
                      Если в 9х это был примитивный консольный шелл, то в cmd была попытка сделать из них что-то, напоминающее язык программирования. Но как-то криво получилось.
                      Ответить
                      • мне баты вообще не нужны = ))

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

                        echo ВНЕЗАПНО & cscript /? > "%TEMP%\RTFM.txt" & start /wait %TEMP%\RTFM.txt & del "%TEMP%\RTFM.txt"

                        JavaScript, хотя и не без микрософтовских квирков
                        Ответить
                        • wsh & ms jscript. помнится я с помощью этой хрени делал подобие файлового менеджера на хтмл, а еще урлогенератор со счетчиками, с передачей во флашгет для массовой закачки
                          Ответить
      • Проблема программ, которые поддерживаются в течение десятилетия, заключается в том, что нельзя вот так в одночасье взять и поменять архитектуру. Если, конечно, разработчики не привыкли с самого начала заниматься рефакторингом. Можно параллельно с поддержкой создавать новую версию, где все "правильно". Но на это нужны люди, время и деньги.
        А бывает, что программисты так привязаны к своему детищу, что и не хотят ничего менять -- работает же.

        Люди, писавшие доску объявлений YABB (это код оттуда), все-таки нашли возможность переписать все, так что сейчас код выглядит иначе.

        ...Впрочем, и несколько лет назад когда была в ходу опубликованная здесь версия, было стыдно так писать - особенно на Perl-е. Чего стоит одна 7 строчка из этого несчастного меню, где идут подряд через OR около 20 условий! Убил бы автора, ей-богу, если бы пришлось поддерживать такой код.
        Ответить
        • Это версии 2.5, на сколько мне известно, это последняя версия, так что этот код как раз относится уже к "Люди, писавшие доску объявлений YABB (это код оттуда), все-таки нашли возможность переписать все, так что сейчас код выглядит иначе. " :)
          Ответить
          • Да, верно, 2.5 -- это последняя стабильная версия. YABB 3 начали писать с чистого листа в 2009г.
            Ответить
            • А, ну так он еще, вроде, не готов. Рано еще говорить. Подождем, когда допишут, и выложим его здесь :)
              Ответить
    • мдя... щикарно))
      Ответить

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