Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте/оцените spring-boot приложение / 25 сообщений из 37, страница 1 из 2
27.06.2018, 08:48
    #39666308
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Это монолит на spring-boot.
Есть админка на javascript.
Из особенностей - большое число юнит тестов.

https://github.com/javadev/pt-backend

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 11:12
    #39666404
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Самая сложная для понимания часть - это javascript.

https://github.com/javadev/pt-backend/blob/master/src/main/resources/static/scripts/views/programs.js

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 14:50
    #39666570
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Значит идеальное приложение, если нет коментариев :)

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 14:54
    #39666577
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin KolesnikovЗначит идеальное приложение, если нет коментариев :)

С уважением, Валентин
Скорее оно такое объемное что нужно время на изучение кода. А со временем бывают трудности.
...
Рейтинг: 0 / 0
27.06.2018, 15:08
    #39666595
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin Kolesnikov, а каким образом контролируется процесс установки скриптиков отсюда?
https://github.com/javadev/pt-backend/tree/master/src/main/resources/db/migration
...
Рейтинг: 0 / 0
27.06.2018, 15:29
    #39666614
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
maytonValentin Kolesnikov, а каким образом контролируется процесс установки скриптиков отсюда?
https://github.com/javadev/pt-backend/tree/master/src/main/resources/db/migration

Добавлена зависимость для flyway и настрока для application.properties:

Код: plaintext
1.
2.
3.
# Flyway
flyway.schemas=ptcore
flyway.baseline-on-migrate=true
spring.jpa.hibernate.ddl-auto=none

Код: xml
1.
2.
3.
4.
5.
    <!-- FlyWay DB Migration -->
    <dependency>
      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-core</artifactId>
    </dependency>



С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 15:34
    #39666620
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin Kolesnikov, +1

Но по тестам там смотреть особо нечего. Тесты - это не продуктив и главное чтоб они работали.
...
Рейтинг: 0 / 0
27.06.2018, 15:52
    #39666649
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
1. в корне проекта насрано
2. flyway - разделения по релизам нет, т.е. миграции выполнить можно только один раз
Valentin KolesnikovИз особенностей - большое число юнит тестов
3. юнит-тесты просто на грани фантастики:
Код: java
1.
2.
3.
4.
5.
6.
    @Test
    public void setters() {
        ActiveCertificateResponseDTO activeCertificateResponseDTO = new ActiveCertificateResponseDTO();
        activeCertificateResponseDTO.setCode(null).setExpiration_date(null);
        assertThat(activeCertificateResponseDTO, notNullValue());
    }


Вы JDK чтоли тестируете чтобы конструктор null не возвращал?
...
Рейтинг: 0 / 0
27.06.2018, 16:03
    #39666669
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
ну тесты то тестами - смотря что чел хочет оттестировать. это раз а два. структура проекта мне кажется это трэш несколько удивительна. зачем мешать сущности и простите контроллеры?

вроде есть стандартная структура типа папка с сервисами, папка (пакаж) с репозиториями, пакаж с контроллером(ми) и тд. а тут просто в кучу навалено по какой-то своей неведомой структуре (я надеюсь что она всё же есть).

видел как то как челы внутри контроллера фигачили коннекшн к базе данных, один раз, а другой раз фигачили коннекшн уже прям в сущности. и ее передавали контроллеру.
...
Рейтинг: 0 / 0
27.06.2018, 16:04
    #39666671
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Андрей Панфилов1. в корне проекта насрано
2. flyway - разделения по релизам нет, т.е. миграции выполнить можно только один раз
Valentin KolesnikovИз особенностей - большое число юнит тестов
3. юнит-тесты просто на грани фантастики:
Код: java
1.
2.
3.
4.
5.
6.
    @Test
    public void setters() {
        ActiveCertificateResponseDTO activeCertificateResponseDTO = new ActiveCertificateResponseDTO();
        activeCertificateResponseDTO.setCode(null).setExpiration_date(null);
        assertThat(activeCertificateResponseDTO, notNullValue());
    }


Вы JDK чтоли тестируете чтобы конструктор null не возвращал?
а... глянул. ну угу. тест ради теста. некоторые вон на геттеры и сеттеры (созданные ломбоком) тесты пишут.
...
Рейтинг: 0 / 0
27.06.2018, 16:06
    #39666673
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
andreykaTну тесты то тестами - смотря что чел хочет оттестировать. это раз а два. структура проекта мне кажется это трэш несколько удивительна. зачем мешать сущности и простите контроллеры?

вроде есть стандартная структура типа папка с сервисами, папка (пакаж) с репозиториями, пакаж с контроллером(ми) и тд. а тут просто в кучу навалено по какой-то своей неведомой структуре (я надеюсь что она всё же есть).

видел как то как челы внутри контроллера фигачили коннекшн к базе данных, один раз, а другой раз фигачили коннекшн уже прям в сущности. и ее передавали контроллеру.

Это концепция package by feature.
Для разбивки приложения на отдельные модули/приложения в будущем.

С уважжением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 16:07
    #39666675
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Опечатка скорее. Там code и expirationDate должны тестится на не пустое.
...
Рейтинг: 0 / 0
27.06.2018, 16:11
    #39666679
Nixic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Вытянул себе, чисто для просмотра кода и проекта от более опытного разработчика нежели я :)
Но еще не смотрел. Действительно нужно время...
...
Рейтинг: 0 / 0
27.06.2018, 16:39
    #39666700
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
@Service
class AdminUserGoalService {
    private final GoalRepository goalRepository;
    private final DictionaryService dictionaryService;

    AdminUserGoalService(GoalRepository goalRepository,
            DictionaryService dictionaryService) {
        this.goalRepository = goalRepository;
        this.dictionaryService = dictionaryService;
    }



мне кажется просто поля помечать автоваерами было бы проще т.к. инжектов может быть и не один. будете конструктор на 10 полей создавать?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
 UserResponseDTO create(UserRequestDTO userRequestDTO) {
        final InUserType inUserTypeDb = userRequestDTO.getType().getId() == null ? null
                : inUserTypeRepository.findOne(userRequestDTO.getType().getId());
        final InUser inUser = new InUser();
        final InUserEmail inUserEmail = new InUserEmail();
        final MapBindingResult errors = new MapBindingResult(new HashMap<>(), String.class.getName());
        emailValidator.validate(userRequestDTO.getEmail(), errors);
        if (errors.hasErrors()) {
            throw new UnauthorizedException(errors.getAllErrors().get(0).getDefaultMessage());
        }
        inUserEmail.setLogin(userRequestDTO.getEmail());
        inUserEmail.setUser_name(userRequestDTO.getName());
        inUserEmail.setPassword(passwordEncoder.encode("Qwerty+1"));
        inUser.setInUserType(inUserTypeDb);
        inUser.setInUserEmails(Arrays.asList(inUserEmail));
        inUser.setD_sex(userRequestDTO.getGender());
        inUser.setD_level(userRequestDTO.getLevel() == null ? null : "" + userRequestDTO.getLevel());
        inUser.setWeight(userRequestDTO.getWeight() == null ? null : userRequestDTO.getWeight().floatValue());
        setupGoals(userRequestDTO, inUser);

        final InUser savedInUser = inUserRepository.save(inUser);
        inUserEmail.setInUser(savedInUser);
        inUserEmailRepository.save(inUserEmail);
        return inUserToDto(adminProgramAssignService.assign(savedInUser));
    }



просто первый попавшийся копипаст:

если креейт то креейт зачем скрещивать с апдейтом? да еще и так?
1) почему ин-юзер?
2) почему сущность называется inUserEmail а там стопитцот полей? включая ин_юзер? и емейл?
3) что за именование?
String user_name;
String device_id;
камелкейс - не?
4) юзайте маппер называйте поля одинаково будет всем хорошо.
5) зачем писать реально модифицирующий данные код в СУЩНОСТИ?? (назад в п.2)
6) inUser.setD_level(userRequestDTO.getLevel() == null ? null : "" + userRequestDTO.getLevel()); -- Што это штооо?

6) вы слышали что нибудь о книжке клин код?
7) вы слышали что нибудь об аббревиатуре SOLID?
8) вы слышали что нибудь о книге Java Head First?
...
Рейтинг: 0 / 0
27.06.2018, 16:42
    #39666705
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin KolesnikovandreykaTну тесты то тестами - смотря что чел хочет оттестировать. это раз а два. структура проекта мне кажется это трэш несколько удивительна. зачем мешать сущности и простите контроллеры?

вроде есть стандартная структура типа папка с сервисами, папка (пакаж) с репозиториями, пакаж с контроллером(ми) и тд. а тут просто в кучу навалено по какой-то своей неведомой структуре (я надеюсь что она всё же есть).

видел как то как челы внутри контроллера фигачили коннекшн к базе данных, один раз, а другой раз фигачили коннекшн уже прям в сущности. и ее передавали контроллеру.

Это концепция package by feature.
Для разбивки приложения на отдельные модули/приложения в будущем.

С уважжением, Валентин
очень тяжело шарить по пакеджам где больше пяти классов, очень тяжело читать методы где больше пары десятков строк, очень тяжело читать наборы параметров что передаешь в методы когда их больше пяти. очень тяжело разбираться в том что делает метод если он делает всё.
...
Рейтинг: 0 / 0
27.06.2018, 16:44
    #39666707
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
...очень тяжело шарить по пакетам среди классов если все классы делают мягко говоря разные вещи. вы можете бить по пакаджам никто ж вас не ограничивает в уровнях вложенности? )
...
Рейтинг: 0 / 0
27.06.2018, 16:50
    #39666708
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
@Service("customUserDetailsService")
public class CustomUserDetailsService implements UserDetailsService {

    private final PtUserRepository ptUserRepository;
    
    CustomUserDetailsService(PtUserRepository ptUserRepository) {
        this.ptUserRepository = ptUserRepository;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        final List<PtUser> ptUsers = ptUserRepository.findByLogin(username);
        if (ptUsers.isEmpty()) {
            throw new UsernameNotFoundException("No user present with username: " + username);
        }
        return new CustomUserDetails(ptUsers.get(ptUsers.size() - 1));
    }

}



я конечно вас критиковать не хочу, но простите, что здесь происходит? вам надо найти юзера по логину? у вас может быть так что в системе более одного юзера с одним логином? )) а почему вы делаете тогда последний ретерн так?
...
Рейтинг: 0 / 0
27.06.2018, 16:56
    #39666713
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
andreykaT, Wow! Wow!

Осади коней!
...
Рейтинг: 0 / 0
27.06.2018, 16:59
    #39666715
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
andreykaT
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
@Service("customUserDetailsService")
public class CustomUserDetailsService implements UserDetailsService {

    private final PtUserRepository ptUserRepository;
    
    CustomUserDetailsService(PtUserRepository ptUserRepository) {
        this.ptUserRepository = ptUserRepository;
    }

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        final List<PtUser> ptUsers = ptUserRepository.findByLogin(username);
        if (ptUsers.isEmpty()) {
            throw new UsernameNotFoundException("No user present with username: " + username);
        }
        return new CustomUserDetails(ptUsers.get(ptUsers.size() - 1));
    }

}



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

Да, может быть несколько пользователей с одинаковым логином в базе данных.

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 17:05
    #39666718
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
што?
...
Рейтинг: 0 / 0
27.06.2018, 17:05
    #39666719
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
...и вы берете всегда последнего? ))
...
Рейтинг: 0 / 0
27.06.2018, 17:09
    #39666724
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
andreykaT...и вы берете всегда последнего? ))

Приложение не даст создать несколко пользователей с одним логином.

В будущем возможна деактивация пользователей без удаления.

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 17:11
    #39666726
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin KolesnikovДа, может быть несколько пользователей с одинаковым логином в базе данных.
С уважением, Валентин


Valentin KolesnikovandreykaT...и вы берете всегда последнего? ))

Приложение не даст создать несколко пользователей с одним логином.

В будущем возможна деактивация пользователей без удаления.

С уважением, Валентин

да?
...
Рейтинг: 0 / 0
27.06.2018, 17:20
    #39666729
Valentin Kolesnikov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
andreykaTValentin KolesnikovДа, может быть несколько пользователей с одинаковым логином в базе данных.
С уважением, Валентин


Valentin Kolesnikovпропущено...


Приложение не даст создать несколко пользователей с одним логином.

В будущем возможна деактивация пользователей без удаления.

С уважением, Валентин

да?

В базе данных может быть несколько пользователей с одинаковым логином, а в приложении есть проверка при создании.

С уважением, Валентин
...
Рейтинг: 0 / 0
27.06.2018, 17:38
    #39666741
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Покритикуйте/оцените spring-boot приложение
Valentin Kolesnikov,
каким образом может быть пользователи с одинаковыми логинами если проверка есть? как они там окажутся?
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Покритикуйте/оцените spring-boot приложение / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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