Должен ли я использовать менее локальные переменные или делать ставки на краткость?

В последнее время я думал об использовании локальных переменных:

Предпочитаю ли я это:

String firstString = classString.getFirstString();
String secondString = classString.getSecondString();

ClassGlobal.execute(firstString, secondString);

или это;

ClassGlobal.execute(classString.getFirstString(), classString.getSecondString());

Я лично предпочел бы более поздний, поскольку он более кратким и не требует двух дополнительных переменных экземпляра. Но хорошо ли это делать? Я жертвую удобочитаемостью кода для краткости? Или это нормально использовать один?

Ответ 1

Если у вас есть сомнения, просто запомните эту цитату из Coding Horror:

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

Смысл этой цитаты - "сделать как можно проще понять и прочитать код". Позже, если вам нужно снова поддерживать программу через 5 лет, вам будет легче, если вы сделаете ее максимально читаемой. Это беспроигрышный для всех.

Ответ 2

Как и для меня, вы должны определить приоритетность кода для минимизации числа переменных. Вы можете прекрасно понять эту строку кода, но для любого программиста, который перехватит ваш код в будущем, он по достоинству оценит использование локальных переменных (даже лучше, если вы используете хорошие "самоопределяющиеся" имена).

Ответ 3

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

ClassGlobal.execute(classString.getFirstString().toLowerCase().substring(0, 10),
   classString.getSecondString().toLowerCase().substring(0, 10));

Эта строка будет намного лучше, если вы выделите firstString и secondString и назначьте им значимые имена. Как и в большинстве случаев в коде, нет "лучшего" способа. Я бы склонен ошибаться в стороне читаемости.

Ответ 4

Я пойду за первым. Это повышает читаемость. Для второго он беспроблемно сокращает некоторые операции присваивания (!), Но в большинстве случаев это очень незначительное увеличение производительности. Так что лучше строго с читабельностью

Кроме того, вам не следует заботиться о преждевременной оптимизации. Более того, в наши дни компиляторы делают для вас такую ​​оптимизацию.

Ответ 5

Если вы можете создать более понятный код, назначив хорошее имя местным жителям, создайте дополнительные локали (также полезно, если вам может потребоваться интерактивная отладка...).

Если бы локальные жители не добавили смысла, потому что вызываемые методы называются хорошо названными, и у вас есть довольно жесткая способность к unit test, а не отладка и точка останова.... для компактной нотации может чувствовать себя лучше. Но чаще всего я бы склонялся к созданию локальных жителей.

Ответ 6

Читаемость его самая важная вещь. Попытайтесь прочитать свой код за 1 год, если он не будет хорошо обновляться, и вы получите ответ.