Яндекс.Метрика

четверг, 31 марта 2011 г.

Говнокод

Недавно у Хомяка увидела строчку «Я леплю из говнокода непонятного урода».

Я думаю, что вы никогда не видели говнокод. Я недавно взяла одну программку на Фортране переписать на нормальный язык. Программа фиг знает какого года. Вот выдержка.
Сразу извинюсь за кодировку — хрен знает, какая там, 866 и 1251 не подходят.


      READ(1,*) U1CP,TIP,BTCP,AB
7     FORMAT(2F7.3,F7.5,F5.3)

      READ(1,*) (R(I),I=1,istp)
3     FORMAT(7F7.5)

      READ(1,*) (AI(J),J=1,istp)
8     FORMAT(7F4.2)

      READ(1,*) HTH,ROKCP
5     FORMAT(F8.2,F4.2)

      READ(1,*) (AMP(L),L=1,5)
6     FORMAT(5F6.3)

C=== яхЁхёўхЄ шёїюфэ√ї фрээ√ї   ==================
      DO 2 I=1,istp
R(I)=R(I)/R1CP
       U(I)=U1CP*R(I)
  2 continue

      HTH=HTH/(U1CP**2)
      WW=U1CP/R1CP
      HTH1=HTH*(U1CP**2)
      R75=(1.-ROKCP)*WW

     DO 701 J=1,5
      AK=1.4
      PI=3.1415926
      A10=U1CP
      A11=C1ACP/A10
      A22=C2ACP/A10
      A32=1.-ROKCP
      A33=A32**2
      A34=A11**2
      A35=A22**2
      ARC1=A33/A34
      ARC2=A33/A35
      ARC11=A32/A34
      ARC12=A32/A35
      AKR=18.3*SQRT(TIP)


     DO 4 I=1,istp

       IF(AMP(J).EQ.0.)  GO TO 50
       IF(AMP(J).EQ.-1.) GO TO 55
       IF(AMP(J).EQ.1.)  GO TO 80

      A40=R(I)**(-2.*AMP(J))
      A41=ARC1*(AMP(J)-1.)*(1.-A40)/AMP(J)
      A42=(AMP(J)-1.)*HTH*A32*(1.-R(I)**(-(AMP(J)+1.)))/
     *((AMP(J)+1.)*A34)
      C1A(I)=C1ACP*SQRT(1.+A41-A42)
      A43=ARC2*(AMP(J)-1.)*(1.-A40)/AMP(J)
      A44=(AMP(J)-1.)*HTH*A32*(1.-R(I)**(-(AMP(J)+1.)))
     */((AMP(J)+1.)*A35)
      C2A(I)=C2ACP*SQRT(1.+A43+A44)
      R76=(R75*R1CP**(AMP(J)+1.))/((R(I)*R1CP)**AMP(J))
      C1U(I)=R76-HTH1/(2.*U(I))
      C2U(I)=R76+HTH1/(2.*U(I))
     GO TO 4

50    A50=2.*ARC1*ALOG(R(I))
      A51=ARC11*HTH*(1.-1./R(I))
      C1A(I)=C1ACP*SQRT(1.-A50+A51)
      A52=2.*ARC2*ALOG(R(I))
      A53=ARC12*HTH*(1.-1./R(I))
      C2A(I)=C2ACP*SQRT(1.-A52-A53)
      R96=(1.-ROKCP)*U1CP
      C1U(I)=R96-HTH1/(2.*U(I))
      C2U(I)=R96+HTH1/(2.*U(I))
     GO TO 4

55    A61=2.*ARC1*(1.-R(I)**2)
      A62=(2.*HTH*A11**2)*A32*ALOG(R(I))
      C1A(I)=C1ACP*SQRT(1.+A61+A62)
      A63=2.*ARC2*(1.-R(I)**2)
      A64=(2.*HTH*A22**2)*A32*ALOG(R(I))
      C2A(I)=C2ACP*SQRT(1.+A63-A64)
      C1U(I)=(1.-ROKCP)*U(I)-HTH1/(2.*U(I))
      C2U(I)=(1.-ROKCP)*U(I)+HTH1/(2.*U(I))
     GO TO 4

80    C1A(I)=C1ACP
      C2A(I)=C2ACP
      C1U(I)=C1UCP/R(I)
      C2U(I)=C2UCP/R(I)

4     CONTINUE


Ё-моё.

5 комментариев:

  1. Красиво, да. Студенты иногда примерно так и пишут, а я с ними воюю. Можешь вот запостить: http://govnokod.ru/

    ОтветитьУдалить
  2. Там нет отдельной категории для ФОРТРАНА :)
    Да и регистрироваться заставляют. А так приведенный вариант занял бы почетное место, я думаю.

    Может выложить на сайт к себе, как пример очень плохого кода...

    ОтветитьУдалить
  3. Ой-вей, це ни разу не говнокод, так, жалкий намек ничтожного быдлокодеришки. Вы не видели кода людей, больных паттернами и ООП головного мозга. Там от места вызова до реального исполнения код проходит 15--25 уровней всяких оберток, расположенных в сотнях файлов. Причем это безобразие не документировано, автор давным-давно уволился, а текущие "архитекторы" и "эксперты" в "наследие" лезть боятся, а сами написать замену не могут.

    ОтветитьУдалить
  4. Ха-ха, увидела операцию «подергивание» на Си:

    ++k--

    ОтветитьУдалить
  5. Анонимному: не сталкиваюсь, работаю у нас в МАИ :), но верю, верю :)

    ОтветитьУдалить