Подтвердить что ты не робот

Разделение декларации и присвоение = хорошая практика?

Будучи заядлым пользователем NetBeans, я продолжаю получать предложения по разделению объявлений и назначений переменных при вводе новой переменной. Как супер быстрый пример с верхней части головы, позвольте взять эту строку Java:

String someInput = JOptionPane.showInputDialog(null, "- Enter something: "); 

против

String someInput;
someInput = JOptionPane.showInputDialog(null, "- Enter something: "); 

NetBeans, похоже, предпочитает последнее (я бы не знал о других IDE, хотя). Хотя он четко работает в обоих направлениях, который будет считаться "хорошей практикой", если вообще? Или это исключительно вопрос личных предпочтений?

(Очевидно, что разделение двух означает дополнительную строку, которую вы могли бы просто объединить в одну, но это не так.)

4b9b3361

Ответ 1

Нет никаких причин для разделения объявления и назначения, если вы просто собираетесь их использовать в последовательных строках. Я бы разделил их только в том случае, если назначение было условным, или если ему нужно было перейти в отдельный блок кода (например, try/catch, или если назначение относится к конструктору и т.д.).

Ответ 2

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

Сказав это, до тех пор, пока вы сможете четко сообщать намерение своего кода людям, с которыми вы работаете с ним, или сами в течение года, это не имеет большого значения.

Давайте изменим наше традиционное отношение к строительству программ: вместо того, чтобы вообразить, что наши Основная задача - проинструктировать компьютер, что делать, позвольте нам сосредоточиться скорее на разъяснении людям того, что мы хотим, чтобы компьютер работал. - Дональд Кнут

Ответ 3

Это была опция, добавленная в NetBeans где-то между 7.0 и 7.3. Если вам не нравится этот намек, его можно изменить, сняв флажок: Инструменты > Параметры > Редактоp > Советы > Предложения > Разделение декларации

Screenshot of NetBeans > Prefs > Hints > Suggestions > Split Declaration

Ответ 4

Netbeans предлагает это, поскольку это может ускорить кодирование, например, рассмотреть это назначение

final String myString = "somevalue"

Затем вы решаете, что на самом деле значение зависит от некоторого boolean

final String myString;
if(something) {
    myString = "somevalue"
} else {
    myString = "someothervalue"
}

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

В общем случае, если вы назначаете безоговорочно, тогда нет причин для разделения объявления и назначения.

Ответ 5

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

Я лично предпочитаю инициализировать мои переменные прямо в точке объявления. По этой причине я предпочел бы, чтобы первый над последним.

Ответ 6

Code Complete, который хорошо изучается большинством сообщества программистов, предлагает на своей странице 241, что в качестве защитного программирования вы можете либо инициализировать каждую переменную, как она была объявлена ​​(ваш первый вариант), либо инициализировать ее рядом с ней (второй вариант).

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

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