1. Pascal / Говнокод #2354

    +102

    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
    begin
      tru:=false;
      if    tru=false then
      begin
        ObrMatritsa(Sigm,Sigm_transp);
        tru:=true;
        det:=abs(Determinant(Sigm));
        if det=0 then
        begin
          ShowMessage('Determinant = 0');
          tru:=false;
          Application.Terminate;
          exit;
        end;
        //if  det=0 then begin result:=0 ; exit end;
        sum:=1/sqrt(power(2*pi,kol_prizn)*det* exp(Mas));
        if  sum=0 then result:=0 ;
      end else exit;
    end;

    Запостил: TAX, 30 Декабря 2009

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

    • где тут говнокод?
      Ответить
      • tru:=false;
          if    tru=false then
          // ...


        может быть это?
        Ответить
        • из за названия одной переменной считать этот код говном имхо неверно. Код довольно понятный, все отступы на месте. К тому же, может быть tru - Это аббревиатура
          Ответить
          • Э, а зачем проверять переменную на false, если ей только что присвоили это значение? Первый if по-моему вообще не нужен.
            Ответить
            • а это такая защита от дурака :D
              Ответить
              • Типа если вдруг компилятор не присвоит? Нет, я, конечно, знал, что дельфийский компилятор не самый лучший в мире, но чтобы настолько...
                Ответить
            • в целях отладки, скорее всего - можно было подумать сначала: ну типа то, что ей ток что присвоили значение - ну и что? скажем, дев хочет что-то проверить, поэдитал, а предыдущую строчку оставил, чтобы менять ОДНУ строчку, а не бОльшую часть кода - программеры ведь ленивые :)
              конечно, нашелся сразу умник, виложивший его сюда с криками "говно-говно". хотя что это я сам ору? что такое транслитная "ObrMatritsa"? а "ObratnayaMatritsa" не лучше? неа, InvertibleMatrix или как там в инглише принято куда лучше
              Ответить
              • В дельфях нет условной компиляции?
                Ответить
                • каким боком здесь пристроилась условная компиляция? типа, плодить многострочные директивы ради каждого мелкого пустяка + со сменой конфигурации билда? гг, круто ))) да )) интересно, с какой тогда скоростью упадет производительность разработки и исследования, к примеру, в проектах, где по неторой, скажем, апишке документации - ну просто совсем мало )) ужас, не?
                  Ответить
                  • Ну городить кучу не нужных проверок или присваиваний, конечно, лучше. К тому же как я понимаю, студент этот код попытался сдать, т.е. он вроде как отлаженный. Тогда вопросов становится еще больше.
                    Ответить
                    • zitzy, пойми, очень часто случается так, что такие ненужные проверки и присваивания просто остаются после отладки. это зачастую случается тогда, когда экспериментируешь с новым для себя api. здесь, на говнокоде.ру, подобные комментарии уже не раз встречались. конечно, если на проект (а они разных масштабов бывают) не положат болт, такой код почистят. ну, это да, соглашусь, только в разработке. по поводу отлаженности студенческого кода: ну дык, не все сразу понимают программирование. главное, если ему это важно - он со временем исправится. такие ошибки _были_ у всех ;)
                      Ответить
    • Переменную tru (дурацкое имя, однако; и видимо она еще и глобальная до кучи) можно присвоить и в конце при удачном выполнении алгоритма. В начале пусть красуется tru := false, whatever. Интересно, а когда sum будет равна 0?
      Ответить
      • Наверное тогда же, когда и сработает else exit проверки if tru=false...
        Ответить
    • Вот полный код:
      //======================================== =================
      type
      err = array of array of Real;
      er = array of Real;
      var
      matr:er; tru:boolean; razn_X,Mas_rez,Mas_rez_transp:er; j,ty:integer;
      sum,slog,Mas,det:real;Matr_razn,Matr_raz n_obrat,Sigm_transp:err;
      function fff(Mat_X:err;mas_Ml:err;Sigm:err;Mas_kl ast:er;l:integer;i:integer):real;
      begin
      tru:=false;
      if tru=false then
      begin
      ObrMatritsa(Sigm,Sigm_transp);
      tru:=true;
      det:=abs(Determinant(Sigm));
      if det=0 then
      begin
      ShowMessage('Determinant = 0');
      tru:=false;
      Application.Terminate;
      exit;
      end;
      //if det=0 then begin result:=0 ; exit end;
      sum:=1/sqrt(power(2*pi,kol_prizn)*det* exp(Mas));
      if sum=0 then result:=0 ;
      end else exit;
      end;
      //======================================== =================
      PS. Отступы я добавил для читабельности, в оригинале все было в 8 строк.
      Ответить
    • Названия переменных рулят.
      Ответить
    • Ах. Школьная лаба...
      Ответить
    • >>>Ах. Школьная лаба...
      3 курс, специальность программное обеспечение
      Ответить
      • Ну если кто-то из тех, кому лишь бы корочки получить, то вполне реально.
        Ответить
      • а почему ты на третьем курсе делаешь школьные лабы?

        если det равно 0 то наебнуться;
        Ответить
        • потому что российское образровнаие - говно
          вот в германии немцы возраста TAX только пришли на первый курс (ибо в школе учатся 12, а не 10 лет)

          школьная лаба ищо какая
          Ответить
    • А на уровне школьной лабы :D
      Вот таких дубов учат подоконники в российских вузах.
      Ответить
    • > Application.Terminate;
      > exit;
      А это зачем?
      Ответить
    • Как пояснил автор программы if det=0 then впоследствии программа выдавала ошибку, и добрые люди посоветовали в таком случае в таком случае завершать программу, ну а exit как был так и остался.
      Ответить
    • УГ. Несмешной говнокод
      Ответить
    • ShowMessage('Determinant = 0');
      tru:=false;
      Application.Terminate;

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

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