Instagram-Clone-Coding / Spring_instagram-clone

Instagram Clone Coding - Backend using Spring Framework
http://ec2-52-79-71-191.ap-northeast-2.compute.amazonaws.com
MIT License
80 stars 23 forks source link

MemberRepository 테스트 수정 #206

Closed vectorch9 closed 2 years ago

vectorch9 commented 2 years ago

Feature Description

Todo list

vectorch9 commented 2 years ago

@seonpilKim

  1. 선필님 말씀대로 메서드명 수정하고 나니 굳이 Tom이 필요할까라는 생각이 들었습니다.

예를들어, Tom이 Jerry의 프로필을 조회하고, Jerry가 Tom을 팔로우하는 중이라면tomIsFollowedByJerryAndTomFindJerryProfile_FindWithFollowerFlagTrue의 메서드명이 정해집니다.

메서드명 컨벤션에 의해 소문자로 시작하면 고유 명사인 Tom이 tom으로 표현되어 고유 명사라고 인식이 잘 안되네요..

이 메서드명을 followedByMemberAndFindMemberProfile_FindWithFollowerFlagTrue로 지정해도 직관적이라고 생각하는데 어떻게 생각하시나요? 아니면 member 부분만 고유명사를 사용해 followedByJerryAndFindJerryProfile_FindWithFollowerFlagTrue형태로 사용해도 괜찮을 것 같아요

  1. 만약 1번 사항을 적용한다면 아래와 같이 요청의 주체에 me 라는 네이밍을 통일하면 좋을 것 같습니다.

me외에 다른 좋은 용어가 있다면 의견주세요! 저는 떠오르는게 me밖에 없네요..

@Test
void followedByMemberAndFindMemberProfile_FindWithFollowerFlagTrue() {
    // given
    final Member me = MemberUtils.newInstance();
    memberRepository.save(me);

    final Member member= MemberUtils.newInstance();
    memberRepository.save(member);

    final Follow follow = Follow.builder()
        .member(member)
        .followMember(me)
        .build();
    followRepository.save(follow);

    // when
    final UserProfileResponse userProfileResponse = memberRepository.findUserProfile(me.getId(),
        member.getUsername());

    // then
    assertThat(userProfileResponse.isFollower()).isTrue();
}
seonpilKim commented 2 years ago

@bluetifulc

안녕하세요 다훈님. 답변이 많이 늦었네요..

많이 고민해 봤는데, 메소드를 호출하는 주체를 본인이라 가정하면 네이밍을 조금 더 간단히 할 수 있을 것 같아요.

As Is) findMemberProfile_FollowedByMemberAndFindMemberProfile_(...) To Be) findMemberProfile_FollowedByMember_(...)

그리고, 결과에 중복되는 부분 FindWith~도 생략하는게 좋을 것 같아요. then 절에서 확인하는 건 isFollower()의 결과이므로, 아래와 같이 하면 어떨까요?

As Is) findMemberProfile_(...)_FindWithFollowerFlagTrue To Be) findMemberProfile_(...)_FollowerFlagIsTrue

vectorch9 commented 2 years ago

@seonpilKim 넵 좋을 것 같습니다. 혹시 2번 사항에 대해선 어떻게 생각하시나요 ?

seonpilKim commented 2 years ago

음.. 주체를 me라고 작명하는게 좀 어색한 것 같은데 차라리 본인을 member, 상대방을 follower라고 짓는 건 어떠신가요?

@Test
void followedByFollower_FollowerFlagIsTrue() {
    // given
    final Member member = MemberUtils.newInstance();
    memberRepository.save(member);

    final Member follower = MemberUtils.newInstance();
    memberRepository.save(follower);

    final Follow follow = Follow.builder()
        .member(follower)
        .followMember(member)
        .build();
    followRepository.save(follow);

    // when
    final UserProfileResponse userProfileResponse = memberRepository.findUserProfile(member.getId(),
        follower.getUsername());

    // then
    assertThat(userProfileResponse.isFollower()).isTrue();
}
vectorch9 commented 2 years ago

팔로우시에는 괜찮은데.. 게시물을 조회하는 경우가 애매해져서 의견을 냈습니다. 그냥 uploader식으로 명칭을 바꾸면 될 것 같네요.

vectorch9 commented 2 years ago

좀 더 생각해보니 팔로워가 있는 경운 followedByFollower식으로 지으면 되는데 주체가 다른 사람을 팔로우하고 있는 경운 이름 짓기가 애매해지네요.