2017-01-30 5 views
-2

Всякий раз, когда я прокомментирую свой код, мне нравятся красивые и большие комментарии. Порой большие комментарии должны быть вложенными, я обычно добавляю дополнительный отступ. Было бы гораздо лучше, если бы я мог использовать дополнительные блоки кода {}, чтобы сделать отступ более логичным.Сделайте лишние кодовые блоки-области - замедлите выполнение?

Давайте быстрый пример:

// ┌───────────────────┐ 
// │ COMMENT   │ 
// └───────────────────┘ 
{ 
    // Code in here 
} 
// ┌───────────────────┐ 
// │ ;     │ 
// └───────────────────┘ 

Будет {} в этом примере замедлить скорость программы Java в любом случае или они будут автоматически удалены компилятором? Разумеется, {} является областью само по себе, и Java захочет сохранить это, правильно?

+1

Почему бы вам просто не сравнить это? Но как это могло бы замедлить код? –

+0

@YvesDaoust Ты очень прав, я определенно должен! –

+1

Мне бы очень понравились комментарии. Они уродливы, добавляют беспорядок и, скорее всего, устарели, чем код, который они описывают. Лучше писать самодокументирующий код. Я уверен, что JVM достаточно умен, чтобы оптимизировать его. – duffymo

ответ

5

Если ваши методы сложны и трудно понять за один раз, попробуйте извлечь один или несколько методов из вашего большого метода. Примечание: вызовы методов не являются бесплатными, но более мелкие методы имеют тенденцию встраиваться, поэтому вы можете получить код, который так же быстр, даже с вызовами методов в вашем коде.

Несомненно {} является областью само по себе, и Java захочет сохранить это, правильно?

Байт-код может содержать информацию о кадрах, но редко бывает. Обычно из кода байта нет способа узнать, использовали ли вы свой код { x(); } или (x).

Эти кадры могут или не могут отличаться от созданного машинного кода, но если их нет, они не имеют никакого значения.

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

Необходимо указать четыре разных направления размещения на каждый самостоятельный метод.

В этом случае я бы цикл вроде

enum Direction { 
    NORTH(0, +1), SOUTH(0, -1), EAST(+1, 0), WEST(-1, 0); 

    final int x, y; 

    Direction(int x, int y) { this.x = x; this.y = y; } 
} 

for (Direction dir : Direction.values()) { 
    // do something with each direction. 
} 

Вы можете хранить Direction.values() в частной константе, чтобы сохранить немного мусора/распределения.

2

Они ничего не замедлят, поскольку они будут удалены компилятором.

Однако, вместо того, чтобы писать такой код, вы можете попробовать и извлечь функцию с хорошим, самодокументируемым именем. Это будет более читаемо.

+0

На самом деле, я работаю над типом мирового поколения. Для каждого автономного метода необходимо проверить четыре направления размещения. Комментарии используются, чтобы отслеживать, в каком направлении, а также иногда размещать разные предметы. –

Смежные вопросы