Java 8 эффективный способ добавления объекта в список - PullRequest
0 голосов
/ 25 сентября 2018

Есть ли короткий и эффективный способ добавить объект в список с проверкой на ноль?

Book book = new Book();
if (CollectionUtils.isNotEmpty(library.getBooks())) {
        library.getBooks().add(book);
} else {
        library.setBooks(Collections.singletonList(book));
}

1 Ответ

0 голосов
/ 25 сентября 2018

Мне совершенно не нравится тот факт, что ваш List может содержать null, какой смысл в этом вообще?Почему бы вам не выполнить рефакторинг и вернуть вместо него пустой .Предполагая, что вы не можете изменить это (пожалуйста, проверьте, если можете), не делайте этого в одной строке, просто потому, что это причудливо - это будет очень нечитаемо в данном конкретном случае.Кроме того, я категорически против таких вспомогательных методов, как CollectionsUtils или StringUtils и т. Д., Которые только ухудшают чтение кода;не говоря уж о всех из них (хотя guava есть некоторые, которые мне действительно нравятся и которые я использую)

Вместо этого, сделайте этот метод более простым и приятным для взгляда:

List<Book> books = library.getBooks();
if(books != null && !books.isEmpty()) {
     books.add(book);   
} else {
     library.setBooks(Collections.singletonList(book));    
}

Сколько секунд вам понадобилось, чтобы понять эту логику?Как, например, в отличие от другого ответа здесь (ничего личного, вы сделали отличное замечание).

Но это все еще вызывает некоторые вопросы лично для меня.Почему бы не переместить всю эту логику в класс Library?Что если вы хотите, чтобы позже добавил еще одну книгу в библиотеку?Поскольку вы использовали Collections.singletonList, который является неизменным, вы не сможете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...