inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

코딩으로 학습하는 리팩토링

리팩토링 4. 함수 추출하기

함수 추출하기 부분에서 의도와 구현에 대해 질문 있습니다.

해결된 질문

202

감바스

작성한 질문수 92

0

의도와 구현이 잘 이해가 가지 않아 예전에 작성 했던 코드를 가져와 아래와 같이 이해를 해볼려고 했는데 맞게 이해를 한건지 궁금합니다.

 

save라는 네이밍으로 저장한다는 의미를 뜻함 -> 의도

코드 내부에는 DTO를 받아와 엔티티 객체로 변환하고 DB에 저장 로직 -> 구현

save 메서드

@Override
public ServerMessageDto save(ServerMessageCreateRequest createRequest) {
    ServerMessage serverMessage = ServerMessage.builder()
            .serverId(createRequest.getServerId())
            .channelId(createRequest.getChannelId())
            .userId(createRequest.getUserId())
            .parentId(createRequest.getParentId())
            .profileImage(createRequest.getProfileImage())
            .content(createRequest.getContent())
            .writer(createRequest.getWriter())
            .chatType(ChatType.SERVER)
            .actionType(ActionType.SEND)
            .files(createRequest.getFiles())
            .build();

    serverMessage.generateSequence(sequenceGenerator.generateSequence(ServerMessage.SEQUENCE_NAME));

    return ServerMessageDto.from(messageRepository.save(serverMessage));
}

postSend 라는 네이밍으로 ~ 후의 전송이라는 의미 -> 의도

코드 내부에는 특정 조건에 따라 함수 호출 로직 -> 구현

postSend 메서드

@Override
public void postSend(Message<?> message, MessageChannel channel, boolean sent) {
    StompHeaderAccessor headerAccessor = StompHeaderAccessor.wrap(message);

    if (StompCommand.CONNECT.equals(headerAccessor.getCommand())) {
        Long userId = sendConnectionStateInfo(headerAccessor);
        sendConnectionStateEvent(userId);
    }

    if (StompCommand.DISCONNECT.equals(headerAccessor.getCommand())) {
        Long userId = saveDisconnectionState(headerAccessor);
        if (userId != null) {
            sendDisConnectionStateEvent(userId);
        }
    }
}

 

java intellij-idea 리팩토링

답변 1

0

백기선

첫번째 메서드는 직관적으로 의도가 이해되는 이름인거 같은데요. 두번째는 잘 모르겠습니다. 내용을 보면 message에 따라 Connect 또는 Disconnect 이벤트를 보내는것 같은데 postSend 라는 이름이 좀 모호하네요.

리팩토링 10. 함수를 명령으로 바꾸기 강의 부분에서 질문있습니다.

0

94

1

레코드에 대해 질문 있습니다.

0

219

2

.github 토큰 등록하는 방법에 대한 질문

0

220

2

깃허브

0

202

1

홈 디렉토리 .github 파일 생성

0

456

1

리팩토링 22. 여러 함수를 변환 함수로 묶기 강의 내용과 소스 코드가 다른 부분 문의

0

554

1

필드를 감추는 것이 중요한 이유?

0

568

1

오타제보. CVS -> CSV

0

375

0

객체의 필드 몇개만 전달할 경우, 통째로 넘기기 vs 여러개로 넘기기

0

510

0

[오탈자제보] 아주 작은 오타

2

401

0

basePrice

0

294

1

4:04 단축키 궁금합니다.

0

435

1

rename 메뉴에 대한 사소한 질문

0

356

1

테스트 코드 예제

0

308

1

Exception 부분

0

338

1

리팩토링 강의 [ 일부 소스 파일 누락 ]

0

331

1

stream으로 변경 시 성능 문제

0

437

2

로컬 변수에 final

0

457

1

Area 밑줄 나온부분

0

404

1

클래스의 상속 vs 네임스페이스 vs nested 클래스

0

321

1

이런 경우도 따로 함수로 빼는게 좋을지 궁금합니다.

0

278

1

질문입니다

2

264

1

파라미터와 이들을 가진 클래스

0

236

1

해당 강의를 실행시 아래와 같은 에러가 발생합니다..!

0

596

2