powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Lombok
17 сообщений из 42, страница 2 из 2
Lombok
    #39126332
Valery Shiskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

Что мешает ставить @CompileStatic?
...
Рейтинг: 0 / 0
Lombok
    #39127867
z3r9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В IDEA генерация методов есть, пару секунд времени занимает.
...
Рейтинг: 0 / 0
Lombok
    #39128142
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery Shiskin,

У меня печальные новости. Я очень большой фанат груви. Я обожаю груви для написания скриптов и всегда использовал этот язык, когда мне надо было данные с сайта скачать, логи распарсить или обработать табличные данные. Вот вчера я скачал Eclipse Mars и поставил на него groovy-eclipse. И с удивлением обнаружил, что автокомплит в пустом грувёвом проекте - не работает.

Пошукав по интернетам, я обнаружил, что codehaus мертв, груви никем толком не поддерживается и не развивается, с groovy-eclipse разбежались все девелоперы.

Scala я уже знаю, а для более простых задач придется учить питон...
...
Рейтинг: 0 / 0
Lombok
    #39128188
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще можно JS взять. Стильно, модно, молодежно.
...
Рейтинг: 0 / 0
Lombok
    #39128315
scf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexander A. Sak,

насколько я знаю, там до сих пор печаль с типичнейшими задачами. Как можно брать в качестве рабочего язык, где в комплекте даже коллекций приличных нет?

Я немного не в теме, но есть ли стандарт или хотя бы общеиспользуемые либы для:
- List, Set, Map, sorted map, linked map с компаратором? equals в яваскрипте не предусмотрен же.
- рекурсивного обхода дерева каталогов
- прочитать файл в массив байт или в строку с указанием кодировки
- запарсить CSV, JSON, XML (нужен и DOM, и потоковые парсеры)
- парсинга HTML
- полноценный HTTP клиент
...
Рейтинг: 0 / 0
Lombok
    #39128757
Фотография Диез
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z3r9В IDEA генерация методов есть, пару секунд времени занимает.

Это "write-only" разработка. Проблема не в скорости набора бойлерплейт-кода, а в его наличии.
Писать легко, поддерживать тяжко.
...
Рейтинг: 0 / 0
Lombok
    #39128793
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfScala я уже знаю
Я здесь выпал в осадок.
...
Рейтинг: 0 / 0
Lombok
    #39128930
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scfAlexander A. Sak,

насколько я знаю, там до сих пор печаль с типичнейшими задачами. Как можно брать в качестве рабочего язык, где в комплекте даже коллекций приличных нет?

Я немного не в теме, но есть ли стандарт или хотя бы общеиспользуемые либы для:
- List, Set, Map, sorted map, linked map с компаратором? equals в яваскрипте не предусмотрен же.
- рекурсивного обхода дерева каталогов
- прочитать файл в массив байт или в строку с указанием кодировки
- запарсить CSV, JSON, XML (нужен и DOM, и потоковые парсеры)
- парсинга HTML
- полноценный HTTP клиент

Я имел в виду JS в виде скриптового языка в Java. Rhino или Nashorn. Там, естественно, доступно все наследие Java.
...
Рейтинг: 0 / 0
Lombok
    #39129045
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
z3r9В IDEA генерация методов есть, пару секунд времени занимает.
В наше время It-сегмент переосмысливает то что было создано в двухтысячные.
А в двухтысячные было создано много ложных направлений. Например кодогенерация
в средах. Наплодили огромную тучу неподъёмного сорца. Сегодня никто не хочет
рефакторить или реверсить старый сорц. Дешевле иногда новое написать.

Современный Веб ищет лаконичности. И все направления в исследовании применения
языков ФП (F#, Scala, Ruby) это эхо поисков. Языки сокращают свой синтаксис.
Выбрасывают то что совершенно правильно было названо бойлер-плейтом.

Посмотрите вебинары и конференции по Java. Трендом является лаконичность.
Я видел фреймворки которые специально писались под Groovy. Даже попытки
перенести скриптовый JS на сервер - это тоже определённый тренд. Тренд
на объективное уменьшение объёма кода.
...
Рейтинг: 0 / 0
Lombok
    #39129048
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
scf,

Тем не менее, новые версии груви выходят, оракловцы делают в java9 поддержку более легкого лоадинга-анлоадинга скриптов - это для всех скриптовых языков, и тд и тп. Просто, проект переехал на апач. Ну так в этом виноваты все любители груви - надо было активней покупать поддержку. А то как пользоваться - так очередь выстраивается, а как оказать материальную помощь авторам - так "оно ж бесплатное".

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

ИМХО, груви будет жить, потому что критическое кол-во нормального софта на нем уже написано, программисты его полюбили, а лучшей альтернативы нет и не будет еще какое-то время.
...
Рейтинг: 0 / 0
Lombok
    #39132556
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще что мега-удобно в ломбоке - это наличие @Cleanup аннотации, которая трансформирует код, как будто он написан в стиле try-with-resources. Благодаря этому можно избавиться от некрасивой вложенности, и писать в "плоском" стиле как-то так:

Код: java
1.
2.
3.
4.
5.
6.
7.
@Cleanup Connection conn = dataSource.getConnection();
@Cleanup PreparedStatement ps = conn.prepareStatement("...");
ps.setInt(1, 1);
@Cleanup ResultSet r = ps.executeQuery();
while(r.hasNext()){
...
}



Особенно удобно это когда пишешь что-то хитрое, и получается много уровней вложенности и страдает читаемость.
...
Рейтинг: 0 / 0
Lombok
    #39132560
pavel_nv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,
а как со стрек-трейсами ошибок и дебагом?

а то в eclipse удобство работы с лямбдами страдает...
...
Рейтинг: 0 / 0
Lombok
    #39132565
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapokЕще что мега-удобно в ломбоке - это наличие @Cleanup аннотации, которая трансформирует код, как будто он написан в стиле try-with-resources. Благодаря этому можно избавиться от некрасивой вложенности
Особенно удобно это когда пишешь что-то хитрое, и получается много уровней вложенности и страдает читаемость.
наверное, но именно в кетче иногда удобно сделать "ход конем"
...
Рейтинг: 0 / 0
Lombok
    #39132668
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavel_nvchabapok,
а как со стрек-трейсами ошибок и дебагом?

а то в eclipse удобство работы с лямбдами страдает...

А что может быть не так со стектрейсами и дебагом? Я пользуюсь ли идеей или нетбинсом.
к коду блока finally, который генерится, прикрепляется метаинформация, о том, что этот блок находится в той строке, где стоит эта аннотация, поэтому, когда мы попадаем в сгенеренное finally, то среда прыгает подсвеченой строкой на соответствующую строку.

Провел я тут исследовательскую работу. Есть следующий момент.
Сгенеренная подчистка (насколько я представляю) могла бы выглядеть как-то так:
Код: java
1.
2.
3.
4.
5.
6.
7.
Connection conn = dataSource.getConnection()
try{
....
}finally{
    if(conn!=null)
        conn.close();
}




Lombok зачем-то делает хитрее:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
Connection conn = dataSource.getConnection()
try{
....
}finally {
    if(Collections.singletonList(conn).get(0) != null) {
        conn.close();
    }
}



Я не знаю, зачем он так извращается, видимо это какая-то совместимость со старыми версиями java. Где-то писали, что это уход от каких-то предупреждений. JIT-компилятор по идее, всю эту гадость должен убрать, к тому же на производительность она все равно не влияет, т.к. блок try исполняется редко.

Так же писали, что эта гадость говняет jacoco-репорты, и делает недостижимым 100% покрытия, потому что внутри singletonList().get() не выходит воспроизвести IndexOutOfBoundsException. Наверное, в очень больших проектах это может быть критично, но насколько понимаю, всем пофиг.

У этих двух вариантов следующая проблема: если будет брошен экзепшен внутри try, а потом close() тоже бросит экзепшен, то наверх уйдет тот, который бросился внутри close(), а исключение в логике будет утеряно.

try-with-resurces эту проблему решает более аккуратно, выпуская наверх исключение брошенное в логике, а исключение из в finally может быть внутри него:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Connection conn = dataSource.getConnection()
Throwable var33=null;
try{
....
}catch(Throwable th){
    var33 = th;
    throw th;
}finally{
    if(conn!=null){
        if (var33!=null){
            try{
                conn.close();
            }catch(Throwable th){
                 var33.addSuppressed(th);
            }
        }else{
            conn.close();
        }
    }
}




Впринципе, да, согласен, что try-with-resources аккуратнее обращается с исключениями, но наверху как правило все равно ты это все не достаешь и не анализируешь так пристально. И если логика бросает исключение и close() бросает...ну хз конечно, но скорей всего, в этом случае все настолько плохо, что правильной работой с исключениями ситуацию не исправить. Хотя конечно, ситуации разные могут быть.

rema174наверное, но именно в кетче иногда удобно сделать "ход конем"
ну, если нужен catch, то понятно, что нужен явно прописаный try, а если он есть, то (насколько я понимаю) в @Cleanup просто нет смысла, хотя все равно можно написать. Тогда в результирующем коде будет два try, один вложен в другой (не проверял это).
...
Рейтинг: 0 / 0
Lombok
    #39132820
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokЕще что мега-удобно в ломбоке - это наличие @Cleanup аннотации, которая трансформирует код, как будто он написан в стиле try-with-resources. Благодаря этому можно избавиться от некрасивой вложенности, и писать в "плоском" стиле как-то так:
сомнительно.
- вывести коннект ЗА процедуру используя ООП и нет проблемы
- декларативное с инжекциями и аннотациями
- один коннект на все твои процедуры и не надо писать в "плоском стиле".
Т.е. тут всё очень индивидуально. Если писать лапшу-код, то сабж никак не поможет.
Что касается Сеттеров и Геттеров, то я согласен. Тут лаконичность кода нужна.
IMHO
...
Рейтинг: 0 / 0
Lombok
    #39133445
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123- вывести коннект ЗА процедуру используя ООП и нет проблемы
- декларативное с инжекциями и аннотациями
- один коннект на все твои процедуры и не надо писать в "плоском стиле".


Ну так речь же не о коннектах в частности, а о ресурсах вообще. Считайте, что там не коннекшен, а InputStream, например. Просто я на примере коннекта показал. Кстати, даже при работе с базой всякие PreparedStatement и ResultSet-ы могут быть. Их же не будешь инжектить, и не будешь иметь, например, 1 ResultSet на все процедуры. По этой же причине, инжекции и аннотации не всегда могут спасти. У меня вот вообще есть не веб-проекты, и там нету всех этих модных фич.
...
Рейтинг: 0 / 0
Lombok
    #39133486
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapokи не будешь иметь, например, 1 ResultSet на все процедуры
мы как будто пытаемся перейти из процедурного программирования в ООП стиль программирования.
chabapokУ меня вот вообще есть не веб-проекты, и там нету всех этих модных фич.
тут надо конкретно. Т.к. вариантов миллион.
Например, в десктопе биндинг. Т.е. сам компонент уничтожает присоединённый к себе DataSet\DataSource и т.д.
Простое правило: Делаем МАКСимально работы в БД. На клиенте DataSet нужен только как источник данных к визуальному контролу.
При унчитожении Parent все детки автоматом закрываются т.к. идут события.
...
Рейтинг: 0 / 0
17 сообщений из 42, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Lombok
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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