powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Чистый код
25 сообщений из 25, страница 1 из 1
Чистый код
    #38801706
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Простейший вопрос. как грамотней написать, с точки зрения "хорошего кода".

1)
Код: java
1.
if ( null == object ){...}


2)
Код: java
1.
if ( object == null ){...}



где-то слышал, что лучше сначала писать литерал, потом объект который проверяется на null, как например во втором случае.
а как вообще грамотней, удобочитаемей , так сказать =)?
или может литературу какую посоветуете по написанию чистого кода почитать?

ps читал отзывы по книге роберта мартина "чистый код" - довольно неоднозначные.
...
Рейтинг: 0 / 0
Чистый код
    #38801719
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex021Простейший вопрос. как грамотней написать, с точки зрения "хорошего кода".

1)
Код: java
1.
if ( null == object ){...}


2)
Код: java
1.
if ( object == null ){...}



где-то слышал, что лучше сначала писать литерал, потом объект который проверяется на null, как например во втором случае.
а как вообще грамотней, удобочитаемей , так сказать =)?
или может литературу какую посоветуете по написанию чистого кода почитать?

ps читал отзывы по книге роберта мартина "чистый код" - довольно неоднозначные.

))) если это не шутка, то по барабану, встречал и так и так
...
Рейтинг: 0 / 0
Чистый код
    #38801723
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смысл в Yoda notation для сравнения отсутствует. Yoda notation в Java используйется для equals, чтобы избежать потенциального NPE.
Прямая нотация ближе к английскому, поэтому предпочтительнее.
Почитать по теме стоит
- Java 8 API Optional, Stream.
- Guava
- О функциональном программировании вообще.
Вот в этой статье как раз разжевывается как и почему функциональный код "чище" то есть "понятнее".
http://miles.no/blogg/why-care-about-functional-programming-part-1-immutability
http://miles.no/blogg/why-should-we-care-about-functional-programming-part-2-transformations

Что именно там у Мартина неоднозначного не знаю. ИМХО, вполне толково и по делу.
...
Рейтинг: 0 / 0
Чистый код
    #38801736
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rema174))) если это не шутка, то по барабану, встречал и так и так
не шутка)
...
Рейтинг: 0 / 0
Чистый код
    #38801738
alex021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

спасибо, как всегда с дельными советами
...
Рейтинг: 0 / 0
Чистый код
    #38801744
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex0211)
Код: java
1.
if ( null == object ){...}


2)
Код: java
1.
if ( object == null ){...}

Если забыть один знак равенства, то в первом варианте компилятор сразу скажет, что null-константе нельзя присваивать значения.
С моей кочки зрения это чуть понятнее, чем "требуется булев тип, встретился ...".
...
Рейтинг: 0 / 0
Чистый код
    #38801755
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕсли забыть один знак равенства, то в первом варианте компилятор сразу скажет, что null-константе нельзя присваивать значения.
С моей кочки зрения это чуть понятнее, чем "требуется булев тип, встретился ...".
Это просто наследие C++, где проблема актуальна и к ошибке компиляции не приводит.
...
Рейтинг: 0 / 0
Чистый код
    #38801964
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorovalex0211)
Код: java
1.
if ( null == object ){...}


2)
Код: java
1.
if ( object == null ){...}

Если забыть один знак равенства, то в первом варианте компилятор сразу скажет, что null-константе нельзя присваивать значения.
С моей кочки зрения это чуть понятнее, чем "требуется булев тип, встретился ...".
Интересно, какая IDE позволит без ошибки выполнить 2й вариант.. Если мы говорим о Java
...
Рейтинг: 0 / 0
Чистый код
    #38801967
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оу, извиняюсь, не так прочитал сообщение, все верно, но в любом случае будет ошибка
...
Рейтинг: 0 / 0
Чистый код
    #38802059
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cpt. GrayОу, извиняюсь, не так прочитал сообщение, все верно, но в любом случае будет ошибка
интересно, где же там ошибка :)
...
Рейтинг: 0 / 0
Чистый код
    #38802065
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174Cpt. GrayОу, извиняюсь, не так прочитал сообщение, все верно, но в любом случае будет ошибка
интересно, где же там ошибка :)
{...}
...
Рейтинг: 0 / 0
Чистый код
    #38802072
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
no56892rema174пропущено...

интересно, где же там ошибка :)
{...}
тогда почему в первом случае не будет ошибки :)
...
Рейтинг: 0 / 0
Чистый код
    #38802076
Cpt. Gray
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, вопрос был в том, что если случайно не поставить один знак "="

if ( null = object )
Выдаст ошибку: null-константе нельзя присваивать значения

if ( object = null )
В Джаве тоже выдаст ошибку: ожидалось boolean, а получили ссылку на объект который не приводиться к boolean,
хотя в некоторых языках может и не выдать ошибки, а присвоить ссылке на объект null значение и пойти себе работать дальше
...
Рейтинг: 0 / 0
Чистый код
    #38802093
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174no56892пропущено...

{...}
тогда почему в первом случае не будет ошибки :)
А автор и не говорил ( 16827577 ) что в первом случае не будет ошибки. Он решил разобрать только второй.)
...
Рейтинг: 0 / 0
Чистый код
    #38802095
DDiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cpt. Gray,

во втором случае будет NPE в рантайме, при компиляции всё ок.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
    public static void main(String[] args) {
        Boolean b = Boolean.TRUE;
        if(b=null) {
            System.out.println("null");
        } else {
            System.out.println("!null");
        }
    }
...
Рейтинг: 0 / 0
Чистый код
    #38802103
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cpt. GrayНет, вопрос был в том, что если случайно не поставить один знак "="
тогда нужно было рассмотреть еще случаи, если поставить лишний символ или забыть скобочку, или еще одну скобочку, и прочее множество вариантов "если" ))
...
Рейтинг: 0 / 0
Чистый код
    #38802191
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой вот паттерн часто встречаю у своих разрабов.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
if (document!=null){ 
   if (document.body!=null){
      if (document.body.table!=null){
           ....
           doSomeFuckenActionsWith(document.body.table......fuckenTag.getValue());
      }
   }
}



Думаю о смене парадигмы. Но еще не накопил аргументов в пользу.
Может пора подойти ближе к XPath/XML, или Lisp/AST. Вобщем
нужно "нечто" прозрачное по отношению к обработке NPE. ПО аналогии
с Ораклом. Если есть NULL то нет процессинга но и ошибки тоже
нет. NULL по сути означает не wild-объект и не неинициализированный
а просто молчаливый игнор.
...
Рейтинг: 0 / 0
Чистый код
    #38802199
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВот такой вот паттерн часто встречаю у своих разрабов.
Бич Java и торопливых кодеров. null значение надо отсекать ближе к источнику, а не в месте применения.

maytonДумаю о смене парадигмы. Но еще не накопил аргументов в пользу.
Может пора подойти ближе к XPath/XML, или Lisp/AST. Вобщем
нужно "нечто" прозрачное по отношению к обработке NPE. ПО аналогии
с Ораклом. Если есть NULL то нет процессинга но и ошибки тоже
нет. NULL по сути означает не wild-объект и не неинициализированный
а просто молчаливый игнор.
Java 8/Guava Optional.
...
Рейтинг: 0 / 0
Чистый код
    #38802201
no56892
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

try-catch(NPE ex){} ?
...
Рейтинг: 0 / 0
Чистый код
    #38802208
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJava 8/Guava Optional.
Ок. Спасибо. Почитаю.

Да там вобщем 90% - сущности Axis. Сгенерированные wsdl2java.
...
Рейтинг: 0 / 0
Чистый код
    #38802213
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
no56892mayton,

try-catch(NPE ex){} ?
Мы думали о перформансе. Почему-то считали что такая проверка "стоит дешевле"
с точки зрения мегафлопов CPU. Хотя никто до бенчмарков не дошёл.

На вход логике довольно часто летят частично-пустые объекты.
...
Рейтинг: 0 / 0
Чистый код
    #38802219
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДа там вобщем 90% - сущности Axis. Сгенерированные wsdl2java.
Инертность в Java очень сильная, к сожалению. Генерикам уже больше 10 лет, а до сих пор не во все API интегрированы.
Поэтому ожидать фреймверков с поддержкой лямбд и Optional в скором времени не приходится. Проще генератор пропатчить.
...
Рейтинг: 0 / 0
Чистый код
    #38802228
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytontry-catch(NPE ex){} ?
Мы думали о перформансе. Почему-то считали что такая проверка "стоит дешевле"
с точки зрения мегафлопов CPU. Хотя никто до бенчмарков не дошёл.
[/quot]
Иногда может быть и быстрее. Особенно если stack trace не разворачивать и серверный FastThrow использовать. Видел недавно бенчмарк. Но что-то не могу нагуглить сходу.
...
Рейтинг: 0 / 0
Чистый код
    #38802231
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что генератор? Если у него в WSDL описано что атрибут - implied и это чортов атрибут
стоит на 10 уровне вложенности.
...
Рейтинг: 0 / 0
Чистый код
    #38802233
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczИногда может быть и быстрее. Особенно если stack trace не разворачивать и серверный FastThrow использовать. Видел недавно бенчмарк. Но что-то не могу нагуглить сходу.
Да бох с ним. Не надо гуглить. Всё равно мы переписывать на catch не будем.
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Чистый код
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]