Jawa / Говнокод #13895 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
  100. 100
public final class z extends t {
   public final String toString() {
      return "" + this.a + "!=" + this.b;
   }
   public final void a(bw var1) {
      this.a.a(var1);
      Object var2 = var1.b;
      this.b.a(var1);
      Object var3 = var1.b;
      if(var2 instanceof gh) {
         if(var3 instanceof gh) {
            var1.b = new gm(((gh)var2).a != ((gh)var3).a);
            return;
         }
         if(var3 instanceof ex) {
            var1.b = new gm(((gh)var2).a != ((ex)var3).a);
            return;
         }
         if(var3 instanceof ha) {
            var1.b = new gm(((gh)var2).a != ((ha)var3).a);
            return;
         }
         if(var3 instanceof hh) {
            var1.b = new gm((long)((gh)var2).a != ((hh)var3).a);
            return;
         }
         if(var3 instanceof a) {
            var1.b = new gm((float)((gh)var2).a != ((a)var3).a);
            return;
         }
      } else if(var2 instanceof ex) {
         if(var3 instanceof ex) {
            var1.b = new gm(((ex)var2).a != ((ex)var3).a);
            return;
         }
         if(var3 instanceof gh) {
            var1.b = new gm(((ex)var2).a != ((gh)var3).a);
            return;
         }
         if(var3 instanceof ha) {
            var1.b = new gm(((ex)var2).a != ((ha)var3).a);
            return;
         }
         if(var3 instanceof hh) {
            var1.b = new gm((long)((ex)var2).a != ((hh)var3).a);
            return;
         }
         if(var3 instanceof a) {
            var1.b = new gm((float)((ex)var2).a != ((a)var3).a);
            return;
         }
      } else if(var2 instanceof hh) {
         if(var3 instanceof hh) {
            var1.b = new gm(((hh)var2).a != ((hh)var3).a);
            return;
         }
         if(var3 instanceof ex) {
            var1.b = new gm(((hh)var2).a != (long)((ex)var3).a);
            return;
         }
         if(var3 instanceof ha) {
            var1.b = new gm(((hh)var2).a != (long)((ha)var3).a);
            return;
         }
         if(var3 instanceof gh) {
            var1.b = new gm(((hh)var2).a != (long)((gh)var3).a);
            return;
         }
         if(var3 instanceof a) {
            var1.b = new gm((float)((hh)var2).a != ((a)var3).a);
            return;
         }
      } else if(var2 instanceof ha) {
         if(var3 instanceof ha) {
            var1.b = new gm(((ha)var2).a != ((ha)var3).a);
            return;
         }
         if(var3 instanceof ex) {
            var1.b = new gm(((ha)var2).a != ((ex)var3).a);
            return;
         }
         if(var3 instanceof gh) {
            var1.b = new gm(((ha)var2).a != ((gh)var3).a);
            return;
         }
         if(var3 instanceof hh) {
            var1.b = new gm((long)((ha)var2).a != ((hh)var3).a);
            return;
         }
         if(var3 instanceof a) {
            var1.b = new gm((float)((ha)var2).a != ((a)var3).a);
            return;
         }
      } else if(var2 instanceof a) {
         if(var3 instanceof a) {
            var1.b = new gm(((a)var2).a != ((a)var3).a);
            return;
         }
         if(var3 instanceof ex) {
            var1.b = new gm(((a)var2).a != (float)((ex)var3).a);

полиморфизм? - не, не слышал.
даже не смотря на "защиту" от декомпиляции кода слегка доставил))
взято из декомпиленых кодов одной комэрчэской игры.
http://twwk.ru/ - она самая

Запостил: lowercase lowercase, (Updated )

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

  • Может это Скала / Груви так скомпилировались? Тяжело поверить, чтобы человек такое писал.
    Ответить
    • полагаю это либо протект от декомпиляции(т.е. чтобы не так просто было залесть и изменить чего-то там на свое усмотрение), либо для того, чтобы приложение минимум места занимало. т.к. приложение на телефон, то минимизация размера исполняемого файла непомешает. это как минимизация javascript кода - вроде мелочь но приятно.
      Ответить
  • тот же проект.
    public final class gz extends fv {
    
       public static final fv a = new gz(1);
       public static final fv b; // и тд. до n - вырезал ибо не суть
       private int a;
    
    
       protected gz() {}
    
       private gz(int var1) {
          this.a = var1;
       }
       // около десятока методов опустил
    
       // суть:
       static {
          new gz(2);
          new gz(3);
          new gz(4);
          new gz(5);
          new gz(6);
          new gz(7);
          new gz(8);
          new gz(9);
          new gz(10);
          new gz(11);
          b = new gz(55);
          c = new gz(62);
          d = new gz(56);
          e = new gz(63);
          f = new gz(64);
          g = new gz(57);
          h = new gz(58);
          new gz(65);
          i = new gz(66);
          j = new gz(67);
          k = new gz(68);
          l = new gz(71);
          m = new gz(12);
          n = new gz(13);
       }
    }
    Ответить
      • Блин, я дописал в коммент херню, и не успел ее удалить. Сорри. Комментарий выше читаем так:

        Это жабий енум 😉 Инфа 146%. Если интересно - скомпиль какой-нибудь enum сам, и посмотри на получившийся код.
        Ответить
  • А нельзя ли где-нить в глубинах проекта экзепшн кинуть, чтоб со стек-трейсов поржать?
    Ответить
  • > декомпиленых кодов
    Ну нашли что выкладывать... Еще бы выхлоп какого-нибудь flex'а или bison'а выложили, и искали в нем говно... Код всяко обработан чем-то в духе proguard'а (на что как бы намекают говорящие имена переменных), который любит поинлайнить и пообфусцировать.

    Это не говно, это навоз.
    Ответить
    • Можно подумать, что с if-else оно смотрелось бы лучше 😉

      Здесь проблема все-таки в независимости друг от друга пяти типов gh, ex, ha, hh, a. Они не имеют общего предка и не реализуют общих интерфейсов. Отсюда и n^2 веток.
      Ответить
      • Согласен про классы. Тем не менее, можно независимо получить значение var2.a за 5 if-else и var3.a за 5 if-else, а потом сравнить и присвоить. Количество ветвей получится линейным, а не квадратичным.
        Ответить

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

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8