Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

228 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TTOTTOGA-PROJECT

μ„œλΉ„μŠ€ μ„€λͺ…

image image image image image image

μ„œλΉ„μŠ€ 이용 κ°€μ΄λ“œ

image

νŒ€μ› ꡬ성

1. Stack Info

  • JAVA 17
  • SpringBoot 3.2.1
  • Build Tool Gradle 0 groovy

Dependencies

  • Spring Web, H2(둜컬용), JPA, Lombok, MySql

2. 브랜치 μ „λž΅

image

  • masterλŠ” μ–Έμ œλ“ μ§€ 배포가 κ°€λŠ₯ν•œ μƒνƒœ(릴리즈)
  • μƒˆλ‘œμš΄ ν”„λ‘œμ νŠΈλŠ” develop을 기반으둜 별도 feature 브랜치λ₯Ό μƒμ„±ν•˜μ—¬ μž‘μ—…μ„ 진행함
  • λΈŒλžœμΉ˜λŠ” λ‘œμ»¬μ— commitν•˜κ³ , μ •κΈ°μ μœΌλ‘œ 원격 λΈŒλžœμΉ˜μ— push함
  • ν”Όλ“œλ°±μ΄λ‚˜ 도움이 ν•„μš”ν•˜κ±°λ‚˜,μ½”λ“œ 병합 ν•  μ€€λΉ„κ°€ λ˜μ—ˆλ‹€λ©΄ pull requestλ₯Ό λ§Œλ“¬
  • λ‹€λ₯Έμ‚¬λžŒμ΄ λ³€κ²½λœ μ½”λ“œλ₯Ό κ²€ν†  ν•œ λ’€ μŠΉμΈν•˜λ©΄ master에 병합함
  • λ³‘ν•©λœ masterλŠ” μ¦‰μ‹œ 배포할 수 있으며, 배포 ν•΄μ•Όλ§Œ 함

3. 컀밋 μ»¨λ²€μ…˜

image image

좜처 : https://puleugo.tistory.com/165

μ˜ˆμ‹œ(κΉƒλͺ¨μ§€ μ‚¬μš©)

image

4. μ½”λ“œ μ»¨λ²€μ…˜

🐫 ν•¨μˆ˜λͺ…, λ³€μˆ˜λͺ…은 μΉ΄λ©œμΌ€μ΄μŠ€λ‘œ μž‘μ„±ν•©λ‹ˆλ‹€.

forλ¬Έ / if문은 λ‹€μŒκ³Ό 같이 κΈ°μž…ν•©λ‹ˆλ‹€. (ν•œ μΉΈ 띄어쓰기)

List<HouseResponseDto> houseResponseDtoList = new ArrayList<>();
        for (House house : findHouses) {
            List<Review> reviewList = reviewRepository.findAllByHouse(house);
            if (reviewList.size() == 0) {
                houseResponseDtoList.add(HouseResponseDto.of(house, 0, 0));
                continue;
            }
           
Optional<CardLike> cardLike = cardLikeRepository.findByCardIdAndUserId(id, user.getId());
        if(cardLike.isEmpty()) {
            cardLikeRepository.saveAndFlush(CardLike.of(card.get(), user));
            return ResponseEntity.ok().body(MessageResponseDto.of("μ’‹μ•„μš” μΆ”κ°€", HttpStatus.OK));
        } else{
            cardLikeRepository.delete(cardLike.get());
            return ResponseEntity.ok().body(MessageResponseDto.of("μ’‹μ•„μš” μ·¨μ†Œ", HttpStatus.OK));
        }

주석 μ˜ˆμ‹œ

// λŒ“κΈ€ μˆ˜μ •
@Transactional
    public ResponseEntity updateComment(Long id, CommentRequestDto commentRequestDto, User user){

        // ν•΄λ‹Ή id의 λŒ“κΈ€μ΄ DB에 μžˆλŠ”μ§€ 확인
        Optional<Comment> comment = commentRepository.findById(id);
        if (comment.isEmpty()) {
            throw new IllegalArgumentException("ν•΄λ‹Ή λŒ“κΈ€μ΄ μ‘΄μž¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.");
        }

μ—°μ‚°μž μ‚¬μ΄μ—λŠ” 곡백을 μΆ”κ°€ν•˜μ—¬ 가독성 높이기

a+b+c+d // bad
a + b + c + d // good

콀마 λ‹€μŒμ— 값이 올 경우 곡백을 μΆ”κ°€ν•˜μ—¬ 가독성을 λ†’μž…λ‹ˆλ‹€.

int[] num = {1,2,3,4,5,6,7,8,9}; //bad
int[] num = {1, 2, 3, 4, 5, 6, 7, 8, 9}; //good

Refactoring 이후 μΆ”κ°€λœ λΆ€λΆ„

1️⃣ 클래슀λͺ… λ’€μ—λŠ” ν•œ μΉΈ 띄어쓰기, μœ„μ— 첫 쀄 띄어쓰기 μ•„λž˜λŠ” ν•œ 쀄 띄어쓰기

public class AdminController {
                                                                               
    private final AdminService adminService;

    @Operation(summary = "νšŒμ›κ°€μž… API", description = "νšŒμ›μ„ λ“±λ‘ν•©λ‹ˆλ‹€.")
    @ResponseStatus(value = HttpStatus.OK)
    @Secured(PositionEnum.Authority.ADMIN)
    @PostMapping("/signup")
    public SuccessResponse signup(@Valid @RequestBody SignupRequestDto signupRequestDto, @AuthenticationPrincipal UserDetailsImpl userDetails) {
        return adminService.signup(signupRequestDto, userDetails.getMember());
    }
                                                                             
}

2️⃣ import ν•΄μ„œ μ“Έ λ•ŒλŠ” 쀄 띄어쓰기 (X)

private final PostRepository postRepository;
private final CategoryRepository categoryRepository;
private final KeywordRepository keywordRepository;
private final EmitterRepository emitterRepository;

3️⃣ λ³€μˆ˜ μ„ μ–Έ λ‹€μŒ λ©”μ†Œλ“œ 였면 μ€„λ°”κΏˆ ν•΄ μ£Όμ„Έμš”.

Optional<Post> findPost = postRepository.findById(id);
                                                                             
        if (findPost.isEmpty()) {
            throw new IllegalArgumentException("ν•΄λ‹Ή κ²Œμ‹œκΈ€μ΄ μ—†μŠ΅λ‹ˆλ‹€.");
        } else if (member.getPosition().getNum() < findPost.get().getModifyPermission().getNum()) {
            throw new IllegalArgumentException("μˆ˜μ • κ°€λŠ₯ν•œ νšŒμ› 등급이 μ•„λ‹™λ‹ˆλ‹€.");
        }

4️⃣ else ifλŠ” μ•žμ—λ§Œ 띄어쓰기 ν•΄ μ£Όμ„Έμš”.

if(post.isEmpty()) {
            throw new IllegalArgumentException("ν•΄λ‹Ή κ²Œμ‹œκΈ€μ΄ μ—†μŠ΅λ‹ˆλ‹€.");
        } else if(member.getPosition().getNum() < post.get().getReadablePosition().getNum()){
            throw new IllegalArgumentException("읽기 κ°€λŠ₯ν•œ νšŒμ› 등급이 μ•„λ‹™λ‹ˆλ‹€.");
        }

5️⃣ β€œ}” μ‚¬μ΄μ˜ return문은 띄어쓰기λ₯Ό ν•΄ μ£Όμ„Έμš”.

	  }
                                                                         
    return key.toString();
}

6️⃣ λ©”μ„œλ“œ λͺ…κ³Ό λ‹€μŒ 쀄은 띄어쓰기 ν•΄ μ£Όμ„Έμš”.

@Transactional
    public SuccessResponse createBookMarkFolder(String folderName, Member member){
                                                                                          
        Optional<Member> findMember = memberRepository.findById(member.getId());
		...
		}

5. ν”„λ‘œμ νŠΈ ꡬ쑰

ttg
    β”œβ”€β”€ TtgApplication.java
    β”œβ”€β”€ domain
    β”‚Β Β  β”œβ”€β”€ coupon
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── CouponController.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CouponService.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── CouponServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CouponResponseDto.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MyPageCouponResponseDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── converter
    β”‚Β Β  β”‚Β Β  β”‚Β Β      └── CouponConverter.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Coupon.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
    β”‚Β Β  β”‚Β Β  β”‚Β Β      └── CouponHandler.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ repository
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── CouponRepository.java
    β”‚Β Β  β”‚Β Β  └── utils
    β”‚Β Β  β”‚Β Β      β”œβ”€β”€ BitMatrixToMultipartFileConverter.java
    β”‚Β Β  β”‚Β Β      β”œβ”€β”€ CustomMultipartFile.java
    β”‚Β Β  β”‚Β Β      └── QrCodeGenerator.java
    β”‚Β Β  β”œβ”€β”€ member
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── MemberController.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberCommandService.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberCommandServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberQueryService.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberQueryServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberService.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── OAuth2MemberServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberImageRequestDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MemberImageResponseDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MyPageAllResponseDto.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MyPageMemberResponseDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── converter
    β”‚Β Β  β”‚Β Β  β”‚Β Β      └── MemberConverter.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ CustomOAuth2Member.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ HeartStore.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── Member.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
    β”‚Β Β  β”‚Β Β  β”‚Β Β      └── MemberHandler.java
    β”‚Β Β  β”‚Β Β  └── repository
    β”‚Β Β  β”‚Β Β      β”œβ”€β”€ HeartStoreRepository.java
    β”‚Β Β  β”‚Β Β      └── MemberRepository.java
    β”‚Β Β  β”œβ”€β”€ review
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ api
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── ReviewController.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ application
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ReviewCommandService.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── ReviewCommandServiceImpl.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ dto
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ MyPageReviewResponseDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ ReviewRegisterRequestDTO.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── ReviewRegisterResponseDTO.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ entity
    β”‚Β Β  β”‚Β Β  β”‚Β Β  β”œβ”€β”€ Review.java
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── ReviewStatus.java
    β”‚Β Β  β”‚Β Β  β”œβ”€β”€ exception
    β”‚Β Β  β”‚Β Β  β”‚Β Β  └── handler
    β”‚Β Β  β”‚Β Β  β”‚Β Β      └── ReviewHandler.java
    β”‚Β Β  β”‚Β Β  └── repository
    β”‚Β Β  β”‚Β Β      └── ReviewRepository.java
    β”‚Β Β  └── store
    β”‚Β Β      β”œβ”€β”€ api
    β”‚Β Β      β”‚Β Β  └── StoreController.java
    β”‚Β Β      β”œβ”€β”€ application
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreCommandService.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreCommandServiceImpl.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreQueryService.java
    β”‚Β Β      β”‚Β Β  └── StoreQueryServiceImpl.java
    β”‚Β Β      β”œβ”€β”€ dto
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ HeartStoreResponseDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ HomeResponseDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ MyPageStoreResponseDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreFindResponseDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreRequestDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreResponseDto.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ StoreResultResponseDto.java
    β”‚Β Β      β”‚Β Β  └── converter
    β”‚Β Β      β”‚Β Β      └── StoreConverter.java
    β”‚Β Β      β”œβ”€β”€ entity
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Menu.java
    β”‚Β Β      β”‚Β Β  β”œβ”€β”€ Region.java
    β”‚Β Β      β”‚Β Β  └── Store.java
    β”‚Β Β      β”œβ”€β”€ exception
    β”‚Β Β      β”‚Β Β  └── handler
    β”‚Β Β      β”‚Β Β      └── StoreHandler.java
    β”‚Β Β      └── repository
    β”‚Β Β          β”œβ”€β”€ MenuRepository.java
    β”‚Β Β          β”œβ”€β”€ RegionRepository.java
    β”‚Β Β          └── StoreRepository.java
    └── global
        β”œβ”€β”€ auth
        β”‚Β Β  β”œβ”€β”€ WebSecurityConfiguration.java
        β”‚Β Β  β”œβ”€β”€ dto
        β”‚Β Β  β”‚Β Β  β”œβ”€β”€ KakaoAccessTokenInfoResponseDto.java
        β”‚Β Β  β”‚Β Β  └── NaverAccessTokenInfoResponseDto.java
        β”‚Β Β  β”œβ”€β”€ handler
        β”‚Β Β  β”‚Β Β  └── OAuth2SuccessHandler.java
        β”‚Β Β  └── jwt
        β”‚Β Β      β”œβ”€β”€ JwtAuthenticationFilter.java
        β”‚Β Β      β”œβ”€β”€ JwtProvider.java
        β”‚Β Β      └── TokenParser.java
        β”œβ”€β”€ common
        β”‚Β Β  β”œβ”€β”€ AwsS3.java
        β”‚Β Β  β”œβ”€β”€ BaseResponseDto.java
        β”‚Β Β  └── ResponseCode.java
        β”œβ”€β”€ config
        β”‚Β Β  └── AwsS3Config.java
        β”œβ”€β”€ error
        β”‚Β Β  β”œβ”€β”€ GeneralException.java
        β”‚Β Β  └── handler
        β”‚Β Β      β”œβ”€β”€ AwsS3Handler.java
        β”‚Β Β      └── MasterExceptionHandler.java
        β”œβ”€β”€ infra
        β”‚Β Β  └── infra.java
        └── util
            β”œβ”€β”€ AwsS3Service.java
            └── Time.java

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages