Skip to content

Full project review by Alexander Khmelov#1

Open
Shubchynskyi wants to merge 1 commit into
full-project-review-initfrom
full-project-review-files
Open

Full project review by Alexander Khmelov#1
Shubchynskyi wants to merge 1 commit into
full-project-review-initfrom
full-project-review-files

Conversation

@Shubchynskyi

Copy link
Copy Markdown
Owner

No description provided.

@Khmelov Khmelov left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Фух. Много. Под конец уже внимания нет.
Код интересный, мидлее стал. Но надо порядок в слоях наводить.
И однотипнее все пилить.

  1. Представь что у тебя 500 сервисов и 500 контроллеров для web.
  2. Представь что просят десктопную версию.
  3. А потом консольную.

Что делать? Вот так должен быть сделан код.

Ну меня радует. Рост хороший. Security надо. И архитектуру. Все иное ок.

@Component
public class GlobalExceptionAspect {

@AfterThrowing(pointcut = "execution(* com.javarush.quest.shubchynskyi..*(..))", throwing = "ex")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Насколько я понимаю это логирование уровня приложения. Довольно часто логи распределяют либо по слоям, либо по признакам домена предметной области. Можно что-то модифицировать в этом направлении.

import java.util.Locale;

@RequiredArgsConstructor
public class AppLocaleResolver implements LocaleResolver {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут по-моему все нормально. Не добавить не убавить, классика.


@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Имена переменных я бы не сокращал нигде

private String migrationName;

@Override
public void run(String... args) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут не очень понятно какой будет объем но если он небольшой можно подумать о транзакциях. Будет быстрее.

public void run(String... args) {

try {
Integer count = jdbcTemplate.queryForObject(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А хотя нет я ошибся. Думал что сделано на orm а тут jdbc


@Slf4j
@Service
public class ImageService {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Вот. Это на сервис уже похоже.

@Slf4j
@Service
@RequiredArgsConstructor
public class QuestService {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Это пополам. Часть тут а часть в контроллере. ОДНОТИПНЕЕ надо.


@Transactional
public void create(Question question) {
questionRepository.save(question);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

И опять пустота


public UserDataProcessResult processUserData(
UserDTO userDTOFromModel,
BindingResult bindingResult,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А тут похоже на проваливание абстракций в сервис. Он будет работать без web?

return updatedUser;
}

public UserDataProcessResult processUserData(

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants