1. Java / Говнокод #18281

    +142

    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
    public int func_175687_A(BlockPos p_175687_1_)
        {
            int var2 = 0;
            EnumFacing[] var3 = EnumFacing.values();
            int var4 = var3.length;
    
            for (int var5 = 0; var5 < var4; ++var5)
            {
                EnumFacing var6 = var3[var5];
                int var7 = this.getRedstonePower(p_175687_1_.offset(var6), var6);
    
                if (var7 >= 15)
                {
                    return 15;
                }
    
                if (var7 > var2)
                {
                    var2 = var7;
                }
            }
    
            return var2;
        }

    Notch видимо не слышал про Math.Max

    Запостил: GameLoper, 03 Июня 2015

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

    • мне одному кажется что это говнокод?
      Ответить
    • Дизасм - по определению не говнокод. К тому же обфускаторы инлайнить умеют, и макс мог раскрыться в 17-19.
      Ответить
      • у java какие то особенности и строки math.max будет не в том месте где вызов?
        Ответить
      • кстати это говнокод? это я попытался исправить
        public int func_175687_A(BlockPos pos)
            {
                EnumFacing facing =  EnumFacing.values()[0];
                int maxRedstone = this.getRedstonePower(pos.offset(facing), facing);
                for (int var5 = 1; var5 < EnumFacing.values().length; ++var5)
                {
                	facing = EnumFacing.values()[var5];
                    maxRedstone = Math.max(maxRedstone, this.getRedstonePower(pos.offset(facing), facing));
        
                    if (maxRedstone >= 15)
                    {
                        return 15;
                    }
                }
        
                return maxRedstone;
            }
        Ответить
        • Пиздец какой-то. Было лучше.

          Нулевую итерацию зачем-то вынес наружу. Добавил краш при пустом массиве. Дергаешь values() на каждой итерации...
          Ответить
          • тоесть это хуже, а можете сказать чем, что бы я в будущем понимал, что нельзя делать
            Ответить
        • Начни оптимизации с переименования переменных.
          Ответить
          • public int func_175687_A(BlockPos pos)
            {
                int maxPower = 0;
                for (EnumFacing facing : EnumFacing.values()) {
                    int power = getRedstonePower(p_175687_1_.offset(facing), facing);
                    if (power >= 15)
                        return 15;
                    maxPower = Math.max(maxPower, power);
                }
                return maxPower;
            }
            Ответить
            • if (power >= 15)
              return 15;
              даже это кажется не нужно :) так как максимум 15 энергия может быть, ну только если лишних 6 раз не прогнять цикл
              Ответить
    • this.getRedstonePower()
      почему не просто getRedstonePower()?

      Есть в жавке max(Iterable)?

      Что за дизасм? Он не умеет переменную цикла называть i?
      Ответить
      • > почему не просто
        Декомпилятор же. Ему не лень писать this на каждом члене.

        > max(iterable)
        В восьмой, в составе их linq.
        Ответить

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