인프런 커뮤니티 질문&답변

감바스님의 프로필 이미지

작성한 질문수

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

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

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

해결된 질문

작성

·

43

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);
        }
    }
}

 

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

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