2014-10-18 6 views
3

Я часто сталкиваюсь с этим сомнением, и я мог бы использовать некоторые мнения об этом. Я часто использую переменные для значений, которые используются только один раз, и я не уверен, есть ли у них правильный или неправильный способ. Есть ли какие-либо конвенции об этом?Оптимизация использования переменных для значений, которые используются только один раз

Простой пример:

int matches = 10; 
int victories = 4; 
int defeats = 3; 

int ties = (matches - (victories + defeats)); 
int score = (victories*3 + ties); 

Если ties быть удалены, так что он становится этим?

int matches = 10; 
int victories = 4; 
int defeats = 3; 

int score = (victories*3 + (matches - (victories + defeats))); 

Несмотря на глупый пример, я задавался вопросом об этом в ситуациях различной сложности.

я могу увидеть некоторые плюсы и минусы использования ties:

Плюсы:

  • улучшает читаемость
  • ties могут быть использованы в дальнейшем при необходимости
  • Легкое обслуживание

Минусы:

  • Менее компактный код
  • Позволяет использовать более переменных
  • использует ресурсы излишне

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

+4

Для меня это не проблема. Используйте то, что вы понимаете лучше всего, сейчас и через 6 месяцев. –

+0

Должны ли «галстуки» быть вшиты и прочее? Короткий ответ: Да, если хотите. Но @HovercraftFullOfEels прав, это имеет значение только в том случае, если вы многократно используете много такого кода, снова и снова. – Stacky

ответ

1

Я советую первой версии. Поскольку большую часть времени мы работаем как команды, и было бы лучше, если бы код был более читабельным и менее громоздким. Оптимизация памяти, на которую нацеливает вторая версия, не поможет (infact ничего), поскольку JVM уже делает очень хорошее освобождение памяти для нас. Если это локальная переменная: JVM освобождает все переменные (локальные переменные) в режиме LIFO (стек вызовов по вызову) Если это переменная-член: JVM будет мусором собирать все объекты (которые также состоят из переменных-членов) в куче на регулярной основе.

8

Я рекомендую вам использовать любую версию, которую проще всего читать. Между компилятором и JIT вы выполняете такую ​​микро-оптимизацию, как это не даст каких-либо измеримых различий в производительности в реальных приложениях.

+2

Точно, 1+. [Write Dumb Code] (http://www.oracle.com/technetwork/articles/java/devinsight-1-139780.html). –

+0

@HovercraftFullOfEels И [этот вопрос] (http://stackoverflow.com/q/1103299/2970947). –