Цитата Вопросы и рекомендации по стилю и технике B ++ C ++ для Bjarne Stroustrup FAQ , причина, по которой размер отличен от нуля, - «Чтобы адреса двух разных объектов были разными». И размер может быть 1, потому что выравнивание здесь не имеет значения, поскольку на самом деле ничего не стоит смотреть.
null
. Это может быть признаком того, что в вашем коде происходит что-то плохое, и вы можете пересмотреть свою логику.
Мне не нравится делать if("someString".equals(myString));
, потому что я действительно хочу знать, является ли myString
null
, и, возможно, справиться с этим или изменить мою логику, чтобы предотвратить подобные ситуации.
Представьте, что у вас есть массив объектов, который был просчитан из-за какой-то ошибки:
myStrings = {..., ..., null, null, ...};
Затем вы хотите выполнить некоторые операции над объектами массива, и вы ' будет иметь:
if("myString".equals(myObjArray[i])) { ... }
Вы не получите NullPointerException
, и вы будете думать, что выполнили операцию со всеми объектами в массиве ... И вы никогда не будете знаю, что вы просчитались, потому что «скрыли» исключение. Принимая во внимание, что если вы сделали:
if(myObjArray[i].equals("myString")) { ... }
Вы получите NPE , и вы узнаете, что что-то не так в массиве ... и вы можете исправить это или обработать это в по-другому.
if("true".equals(saving)){
// do something
}
Это очень безопасная и хорошая практика. Строка «true» никогда не будет нулевой. Таким образом, вы никогда не сравните свою строку с нулем. Этот кусок кода отлично подходит
Извините, но я не могу согласиться по этому вопросу.
Если вы сначала используете константу, вы поддерживаете структуры, скрывающие ошибки программирования. И нужно только создать код
Сверху у вас есть слабое утверждение о переменной. Следующий код всегда должен проверять наличие нулевых значений.
Если вам приходится иметь дело с нулевыми значениями из других модулей, ваша задача состоит в том, чтобы отобразить их в надлежащие представления в вашей доменной модели как можно раньше.
В вашем собственном коде избегайте нуля в качестве параметра или возвращаемого значения, поэтому больше не будет необходимости в проверках на нуль, включая предложенный фрагмент кода.
Видите ли, эта тема больше о том, чтобы избежать нуля, чем принять его, чтобы завоевать ваш код.
Не только безопасный, но также предпочтительный способ решения этой проблемы.