Этот код
int a = 5;
printf("%x\n", a);
печатает
5
Этот код
int a = 5;
printf("0x%x\n", a);
печатает
0x5
Этот код
int a = 89778116;
printf("%x\n", a);
печатает
559e7c4
Если вы вводите заглавную букву x в формате, то заглавным становится шестнадцатеричное значение:
int a = 89778116;
printf("%X\n", a);
печатается
559E7C4
Если вы хотите напечатать указатели, вы используете спецификатор формата p:
char* str = "foo";
printf("0x%p\n", str);
печатает
0x01275744
Я всегда использовал
if ("true".equals(object.getAttribute("someAttr"))) { // ....
, потому что, хотя его немного сложнее читать, он гораздо менее подробный и я думаю, что он достаточно читабелен, чтобы вы к нему привыкли очень легко
Во втором варианте вы можете воспользоваться коротким замыканием &&
:
String attr = object.getAttribute("someAttr");
if (attr != null && attr.equals("true")) { // ....
Есть определенные ситуации, когда краткий подход кажется неправильным для начала, но эффективно становится идиоматическим. Это один из них; другой - что-то вроде:
String line;
while ((line = bufferedReader.readLine()) != null) {
// Use line
}
Побочные эффекты в состоянии? Немыслимо! За исключением того, что это в основном лучше, чем альтернативы, когда вы узнаете конкретный шаблон.
Этот шаблон похож - он настолько распространен в Java, что я ожидаю, что любой достаточно опытный разработчик распознает его. Результат приятно лаконичный. (Забавно, но я иногда вижу код C #, который использует ту же идиому без необходимости - оператор равенства отлично работает со строками в C #.)
Итог: используйте первую версию и ознакомьтесь с ней.
Мне нравится вариант 1, и я бы сказал, что он достаточно читабелен.
Вариант 3, кстати, заключается во введении метода getAttribute, который принимает значение по умолчанию в качестве параметра.
Util.isEmpty (string)
- возвращает string == null || string.trim (). isEmpty ()
Util.notNull (string)
возвращает "", если строка == null
, иначе строка.
Util.isNotEmpty (строка)
возвращает! Util.isEmpty (строка)
И у нас есть соглашение, согласно которому для строк Util.isEmpty (строка)
семантически означает истину, а Util.isNotEmpty (строка)
семантически означает ложь.
Всегда стремитесь к более короткому коду, учитывая, что оба функционально эквивалентны. Особенно в таком случае, когда не жертвуют удобочитаемостью.
Это очень хороший вопрос. Обычно я использую не изящный:
if (object.getAttribute("someAttr") != null && object.getAttribute("someAttr").equals("true")) { // ....
(и больше не буду его использовать)