link1107 / DonationExecutor

Плагин для ру-стримеров, генерирующий события на сервере Minecraft (Spigot/Paper) на основании донатов с "Donation Alerts"
GNU Affero General Public License v3.0
218 stars 22 forks source link

Rewrite code with ide & migrate to Gradle #10

Open dark0ghost opened 2 years ago

dark0ghost commented 2 years ago

1) перевёл проект на gradle 2) прошёлся с ide по коду убрал лишнее( вообщем от тех 3 не особо отличается) 3) убрал ненужные инструкции if-else где это не нужно было и заменил на if-return 4) вынес закомментированныйкод в отдельную функцию пометив как эксперементальный api https://github.com/link1107/DonationExecutor/compare/master...dark0ghost:master#diff-cf1f41473991b2ecd88405ff82c0a5c686a2c400219df4937481bf47d0bb96d7R23 5) добавил CI что бы контролировать проект 6) добавил singltone в котором собрал весь текст, что бы в будущем было легче его редактировать https://github.com/link1107/DonationExecutor/compare/master...dark0ghost:master?short_path=2511803#diff-c153ab6b9052f55b4d2803c70794a61e84f3afcd192c0de9c597a58d6ec848d6R3 7) Пометил аннотациями неиспользуемые переменные (стоит обратить тебе внимания)

https://github.com/link1107/DonationExecutor/compare/master...dark0ghost:master?short_path=2511803#diff-1952849d3261b5e0bc69757d1fa926ac5127f9fb9a5214bd98126031c43db8e3R35 8) некоторые "магические константы вынест в отдельную переменную(что смог быстро понять) https://github.com/link1107/DonationExecutor/compare/master...dark0ghost:master?short_path=2511803#diff-1952849d3261b5e0bc69757d1fa926ac5127f9fb9a5214bd98126031c43db8e3R31-R33

ну и ещё что то по мелочи. А так же хотел бы напомнить,что стоит научиться работать с git и с ветками, так будет легче потом

Так же стоило бы перевести проект на Kotlin связи с тем, что на java код слишком плохим получается. Так же стоило бы перевести с java socket на ktor socket

link1107 commented 2 years ago

А почему всем так мавен глаза мозолит? В чем его недостатки по сравнению с градлом?

dark0ghost commented 2 years ago

А почему всем так мавен глаза мозолит? В чем его отличие от градом?

Как я уже писал в комментариях, я нахожу Gradle лучшим выборов за счёт того его легче читать, меньше писать image image

  1. Вот что легче воспринимается сходу? более менее читаемый конфиг gradle или тонна xml?
  2. весь конфиг сборки gradle уместился в один скриншот, а pom.xml не влез

собственно разве этих оснований для выбора системы сборки не являются важными?

noremac09 commented 2 years ago

А зачем котлин в конфиге градла?

dark0ghost commented 2 years ago

А зачем котлин в конфиге градла?

https://github.com/dark0ghost/DonationExecutor/tree/master/src/main/kotlin

noremac09 commented 2 years ago

В оверхед какой-то уходите с внедрением котлина. Давайте тогда плюсы еще прокинем, чо)

dark0ghost commented 2 years ago

В оверхед какой-то уходите с внедрением котлина. Давайте тогда плюсы еще прокинем, чо)

Оверхед? чем же? он же компилируется в Java, так что на производительность тут никак не сыграеть наличие котлина. а вот плюсы гараздо сложнее прокидывать тк как Kotlin обратно совместим с java, а вот чтобы достичь такого эффекта и то не в полной мере нужно замориться с настройками в gradle + gradle для плюсов и си по моему опыту как то плохо работает ( вплане настройки, не user frandly). Поэтому не понимаю в чём тут overhead и причём тут c/c++

serega6531 commented 2 years ago

Может лучше оставить плагин таким, чтобы Игорь потом смог поддерживать его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

dark0ghost commented 2 years ago

Игорь смог сохранить его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

  1. ну здесь всего 3 файла файла только на котлине и то 2 из них это аннотации и 1 singltone и то со static field
  2. я бы все же настаивал бы на изучение Kotlin за счёт того что на нём про писать (null safe и тд), и то что я видёл в изначальной код базе, могу сказать, что стоит лучше выучить kotlin/jvm и не совершать тех ошибок которые были изначально допущены в оригинале, а так же котлин намного кароче, как пример: java:
    
    disconectListener = new Listener() {
            @Override
            public void call(Object... arg0) {
                logToConsole("Соединение разорвано!");
            }
        };

.on(Socket.EVENT_DISCONNECT, disconectListener)

kotlin:
```kotlin
.on(Socket.EVENT_DISCONNECT){
 logToConsole("Соединение разорвано!")
}

разве не повод ради такого выучить Kotlin?

  1. на счёт конфигов: я согласен с тем, что более корректным было бы использовать config.xml/json, но учитвая, что нам здесь не нужна переносимость конфигов межде разными языками и тем более проектами, то я предпочёл использовать такую структуру + const val даёт оптимизацию (compile time constant - https://kotlinlang.org/docs/properties.html#compile-time-constants) так что лично я считаю допустимым в данном случае использовать такую структуру, но это моё мнение
dokerplp commented 2 years ago

А почему всем так мавен глаза мозолит? В чем его недостатки по сравнению с градлом?

Имхо вкусовщина, у меня в вузе чаще Мавен юзают, на работе тоже, поэтому мне он привычнее, но кто-то может с градом привык больше работать.

dokerplp commented 2 years ago

Может лучше оставить плагин таким, чтобы Игорь потом смог поддерживать его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

Предлагаю писать проект сразу на 3-х языках минимум: Java, Kotlin и Scala

И ещё Spring Boot-ом обмазаться

dark0ghost commented 2 years ago

А почему всем так мавен глаза мозолит? В чем его недостатки по сравнению с градлом?

Имхо вкусовщина, у меня в вузе чаще Мавен юзают, на работе тоже, поэтому мне он привычнее, но кто-то может с градом привык больше работать.

Вот статейка от OTUS которая немного посвятит об этих системах сборок в краце https://habr.com/ru/company/otus/blog/593903/

dokerplp commented 2 years ago

Игорь смог сохранить его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

  1. ну здесь всего 3 файла файла только на котлине и то 2 из них это аннотации и 1 singltone и то со static field

  2. я бы все же настаивал бы на изучение Kotlin за счёт того что на нём про писать (null safe и тд), и то что я видёл в изначальной код базе, могу сказать, что стоит лучше выучить kotlin/jvm и не совершать тех ошибок которые были изначально допущены в оригинале, а так же котлин намного кароче, как пример:

java:


 disconectListener = new Listener() {

            @Override

            public void call(Object... arg0) {

                logToConsole("Соединение разорвано!");

            }

        };

.on(Socket.EVENT_DISCONNECT, disconectListener)

kotlin:


.on(Socket.EVENT_DISCONNECT){

 logToConsole("Соединение разорвано!")

}

разве не повод ради такого выучить Kotlin?

  1. на счёт конфигов: я согласен с тем, что более корректным было бы использовать config.xml/json, но учитвая, что нам здесь не нужна переносимость конфигов межде разными языками и тем более проектами, то я предпочёл использовать такую структуру + const val даёт оптимизацию (compile time constant - https://kotlinlang.org/docs/properties.html#compile-time-constants) так что лично я считаю допустимым в данном случае использовать такую структуру, но это моё мнение

Человек только начал изучать язык, я боюсь что он толком то не понимает про jvm то. У Java комьюнити больше, примеров в сети больше, используется в ентерпрайзе он намного чаще. Выучить Котлин, зная джаву это 1-2 недели. Меня правильно упрекнули за ломбок. Действительно лучше сначала пострадать и пописать код руками (в том числе и проверки на null). Поэтому лучше учиться на Java

dark0ghost commented 2 years ago

Может лучше оставить плагин таким, чтобы Игорь потом смог поддерживать его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

Предлагаю писать проект сразу на 3-х языках минимум: Java, Kotlin и Scala

И ещё Spring Boot-ом обмазаться

Spring boot? Ktor.io для чего придумали? И вообще, Kotlin в отличие от 2ух названных языков умеет в MP)

dokerplp commented 2 years ago

Может лучше оставить плагин таким, чтобы Игорь потом смог поддерживать его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

Предлагаю писать проект сразу на 3-х языках минимум: Java, Kotlin и Scala

И ещё Spring Boot-ом обмазаться

Spring boot? Ktor.io для чего придумали? И вообще, Kotlin в отличие от 2ух названных языков умеет в MP)

Так Спринг же не только для веба, и у него не веб приложение вроде (могу ошибаться, я в логику не всматривался, только в синтаксис)

dark0ghost commented 2 years ago

Игорь смог сохранить его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

  1. ну здесь всего 3 файла файла только на котлине и то 2 из них это аннотации и 1 singltone и то со static field

  2. я бы все же настаивал бы на изучение Kotlin за счёт того что на нём про писать (null safe и тд), и то что я видёл в изначальной код базе, могу сказать, что стоит лучше выучить kotlin/jvm и не совершать тех ошибок которые были изначально допущены в оригинале, а так же котлин намного кароче, как пример:

java:


 disconectListener = new Listener() {

            @Override

            public void call(Object... arg0) {

                logToConsole("Соединение разорвано!");

            }

        };

.on(Socket.EVENT_DISCONNECT, disconectListener)

kotlin:


.on(Socket.EVENT_DISCONNECT){

 logToConsole("Соединение разорвано!")

}

разве не повод ради такого выучить Kotlin?

  1. на счёт конфигов: я согласен с тем, что более корректным было бы использовать config.xml/json, но учитвая, что нам здесь не нужна переносимость конфигов межде разными языками и тем более проектами, то я предпочёл использовать такую структуру + const val даёт оптимизацию (compile time constant - https://kotlinlang.org/docs/properties.html#compile-time-constants) так что лично я считаю допустимым в данном случае использовать такую структуру, но это моё мнение

Человек только начал изучать язык, я боюсь что он толком то не понимает про jvm то. У Java комьюнити больше, примеров в сети больше, используется в ентерпрайзе он намного чаще. Выучить Котлин, зная джаву это 1-2 недели. Меня правильно упрекнули за ломбок. Действительно лучше сначала пострадать и пописать код руками (в том числе и проверки на null). Поэтому лучше учиться на Java

Я сначала начинал с Kotlin/jvm, потоп уже тыкал java, плюс в telegram куча чатов: https://t.me/kotlin_lang, https://t.me/javastart - как основные. И опять же зачем страдать с этими null, если можно писать нормально в kotlin и трогать null когда это необходимо. Java тем более сейчас вытесняется во многих компаниях, google как главный пример, не говоря уже про другие компании. На счет getter/setter - в данном проекте их особо не потыкать поэтому я бы настаивал использовать kotlin, который их бы автоматом генерел бы, я считаю, что в данном проекте, раз его используют другие люди, лучше будет сделать как надо, а поиграться всегда можно успеть (сделать ветку с названием test условно и там поиграться)

dark0ghost commented 2 years ago

Игорь смог сохранить его без твоей помощи, и не надо было учить ещё один язык? А строчки из Text.kt вполне можно вынести в текстовый конфиг.

Предлагаю писать проект сразу на 3-х минимумах: Java, Kotlin и Scala И ещё Spring Boot-ом обмазаться

Весенний ботинок? Ktor.io для чего придумали? И вообще, Kotlin в отличие от 2ух названных языков умеет в MP)

Так Спринг же не только для веба, и у него не веб вроде приложение (могу ошибаться, я в логику не всматривался, только в синтаксис)

он ходит гулять в интернет вот класс DonationAlerts. как я выше писал тут можно было бы использовать сокеты на корутинах у того же ktor, но это уже пусть он сам решает, потому что async в kotlin хоть и не так сложен как в других языка, но все же требует достаточно времени, чем здесь и сейчас

AngryJKirk commented 2 years ago

А почему всем так мавен глаза мозолит? В чем его недостатки по сравнению с градлом?

Не читал тред, но градл мусорка.

Для 99% случаев не нужно иметь ИМПЕРАТИВНЫЙ полный по тьюрингу язык чтобы оперировать зависимостями и плагинами. Мавен хоть и выглядит не очень привлекательно (чем бесит хипстеров), но зато декларативный и не позволяте делать одинаковые вещи тремя разными путями.