ν‹°μŠ€ν† λ¦¬ λ·°

πŸ€ 듀어가기에 μ•žμ„œμ„œ..

 

듀어가기에 μ•žμ„œ, μš°μ„  μš°ν…Œμ½” μΈ‘μ—μ„œ μ œκ³΅ν•œ docs λ₯Ό ν™•μΈν–ˆλ‹€.

 

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

μš°ν…Œμ½” μΈ‘μ—μ„œ μ œκ³΅ν•œ xml νŒŒμΌμ„ λ‹€μš΄λ‘œλ“œ λ°›μ•„ intelliJ λ‚΄λΆ€μ—μ„œ μ½”λ“œμŠ€νƒ€μΌμ„ μ μš©ν•΄μ£Όμ—ˆλ‹€. κΈ°μ‘΄μ—λŠ” ꡬ글 μ½”λ“œμŠ€νƒ€μΌλ‘œ λ˜μ–΄ μžˆμ–΄μ„œ μ•½κ°„μ˜ 차이점이 μžˆλŠ” μš°ν…Œμ½” 츑의 νŒŒμΌμ„ μ΄μš©ν–ˆλ‹€.

 

2. 클린 μ½”λ“œλ₯Ό μœ„ν•œ 원칙

더보기

πŸ€ μ™œ μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν•΄μ•Ό ν• κΉŒ?

1. μžμ‹ μ˜ μƒνƒœλ₯Ό 객체 슀슀둜 관리할 수 μžˆλ‹€.

- User μ΄λΌλŠ” 객체 μ•ˆμ— μ›μ‹œν˜•(int)인 age κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. 이λ₯Ό Age λΌλŠ” 클래슀둜 포μž₯ν•˜μ§€ μ•Šκ³  μ›μ‹œ νƒ€μž… κ·ΈλŒ€λ‘œ κ°–κ³  있게 λœλ‹€λ©΄, age 에 λŒ€ν•œ μœ νš¨μ„± 검사λ₯Ό User 클래슀 λ‚΄λΆ€μ—μ„œ ν•΄μ•Ό ν•œλ‹€. κ·ΈλŸ¬λ‚˜, Age λΌλŠ” 클래슀둜 포μž₯ν•˜κ²Œ λœλ‹€λ©΄ User μ—μ„œλŠ” 더 이상 age λΌλŠ” λ©€λ²„λ³€μˆ˜μ— λŒ€ν•œ μœ νš¨μ„± 검사λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ λœλ‹€.

2. μ½”λ“œμ˜ μœ μ§€λ³΄μˆ˜μ— 도움이 λœλ‹€.

- List<Integer> scoresλΌλŠ” λ§€κ°œλ³€μˆ˜κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. 이λ₯Ό Score μ΄λΌλŠ” 클래슀둜 감싸지 μ•Šκ³  Integer κ³Ό 같은 μ›μ‹œ μžλ£Œν˜•μ„ μ‚¬μš©ν•˜κ²Œ λœλ‹€λ©΄ 이λ₯Ό λ§€κ°œλ³€μˆ˜λ‘œ λ°›λŠ” ν΄λž˜μŠ€μ—μ„œ κ°œλ³„κ°’μ„ λͺ¨λ‘ 일일이 κ΄€λ¦¬ν•΄μ€˜μ•Ό ν•œλ‹€. μ΄λŠ” 객체지ν–₯적이지 μ•Šκ³  클래슀의 크기가 λΉ„λŒ€ν•˜κ²Œ μ»€μ§€λŠ” 문제λ₯Ό μ΄ˆλž˜ν•  수 μžˆλ‹€.

3. μžλ£Œν˜•μ— ꡬ애받지 μ•ŠλŠ”λ‹€.

- Socre λΌλŠ” ν΄λž˜μŠ€κ°€ μžˆλ‹€κ³  κ°€μ •ν•΄λ³΄μž. μ²˜μŒμ—λŠ” int  μžλ£Œν˜•λ§Œ ν•„μš”ν–ˆμ§€λ§Œ 좔후에 double μžλ£Œν˜• μ—­μ‹œ ν•„μš”ν•΄μ‘Œλ‹€λ©΄, μƒμ„±μž μ˜€λ²„λ‘œλ”©μ„ ν†΅ν•΄μ„œ κ°„λ‹¨ν•˜κ²Œ ν•΄κ²°ν•  수 μžˆλ‹€.

 

https://velog.io/@jhp1115/%EC%9B%90%EC%8B%9C%EA%B0%92%EA%B3%BC-%EB%AC%B8%EC%9E%90%EC%97%B4-%ED%8F%AC%EC%9E%A5

 

μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄ 포μž₯

μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄ 포μž₯

velog.io

 

πŸ€ μ™œ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν•΄μ•Ό ν• κΉŒ?

일급 μ»¬λ ‰μ…˜μ€ μ»¬λ ‰μ…˜μ„ ν¬ν•¨ν•œ ν΄λž˜μŠ€λŠ” λ‹€λ₯Έ λ©€λ²„λ³€μˆ˜κ°€ μ—†μ–΄μ•Ό ν•œλ‹€λŠ” 원칙이닀.

 

일급 μ»¬λ ‰μ…˜μ„ μ μš©ν•΄μ•Ό ν•˜λŠ” μ΄μœ λŠ” λ©€λ²„λ³€μˆ˜μ˜ μƒνƒœμ™€ ν•„μš”ν•œ λ‘œμ§μ„ μˆ˜ν–‰ν•˜λŠ” ν–‰μœ„λ₯Ό 일급 μ»¬λ ‰μ…˜ ν΄λž˜μŠ€μ—μ„œ ν•œλ²ˆμ— κ΄€λ¦¬ν•˜λŠ” 것이닀. 예λ₯Ό λ“€μ–΄, Coupon μ΄λΌλŠ” 객체가 있고 이에 λŒ€ν•œ μ»¬λ ‰μ…˜μ„ 관리해야 ν•œλ‹€λ©΄ 일급 μ»¬λ ‰μ…˜μ„ λ”°λ‘œ λ§Œλ“€μ–΄ 관리해야 ν•œλ‹€λŠ” 것이닀.

public class CouponBasket{
	private final List<Coupon> coupons;
}

CouponBasket μ΄λΌλŠ” μΌκΈ‰μ»¬λ ‰μ…˜μ€ λ©€λ²„λ³€μˆ˜λ‘œ μ»¬λ ‰μ…˜μ„ μ œμ™Έν•œ λ©€λ²„λ³€μˆ˜λ₯Ό κ°–μ§€ μ•ŠλŠ”λ‹€. 

λ˜ν•œ, 일급 μ»¬λ ‰μ…˜μ„ μ‚¬μš©ν•˜λ©΄ immutable object κ°€ 될 수 μžˆλ‹€.

 


 

특히 μœ λ…ν•˜λ©΄μ„œ μ§„ν–‰ν•œ λΆ€λΆ„

- μ΅œλŒ€ν•œ ν΄λ¦°μ½”λ“œλ₯Ό μ§€ν–₯ν•˜λ©° μ§€ 것

- ν•¨λΆ€λ‘œ μ»€λ°‹ν•˜μ§€ μ•Šμ„ 것

- ν•˜λ‚˜μ˜ λ©”μ†Œλ“œλŠ” λ°˜λ“œμ‹œ ν•œ κ°€μ§€μ˜ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ ν•  것

- λ©”μ„œλ“œλͺ…을 ν—ˆνˆ¬λ‘œ μ§“μ§€ μ•ŠκΈ°

 

λ‹€μŒ 링크 μ„Έκ°œλ₯Ό κ³„μ†ν•΄μ„œ μ°Έκ³ ν•˜κ³ μž λ…Έλ ₯ν–ˆλ‹€.

https://github.com/woowacourse/woowacourse-docs/blob/main/cleancode/pr_checklist.md

 

GitHub - woowacourse/woowacourse-docs: μš°μ•„ν•œν…Œν¬μ½”μŠ€ λ¬Έμ„œλ₯Ό κ΄€λ¦¬ν•˜λŠ” μ €μž₯μ†Œ

μš°μ•„ν•œν…Œν¬μ½”μŠ€ λ¬Έμ„œλ₯Ό κ΄€λ¦¬ν•˜λŠ” μ €μž₯μ†Œ. Contribute to woowacourse/woowacourse-docs development by creating an account on GitHub.

github.com

https://thalals.tistory.com/325

 

1. μžλ°” 넀이밍 κ·œμΉ™ (java 넀이밍 μ»¨λ²€μ…˜)

[짧은 정리] μƒμˆ˜(final) : λŒ€λ¬Έμž λ³€μˆ˜ : μ†Œλ¬Έμž or 카멜 λ©”μ†Œλ“œ : 카멜 클래슀 : 파슀칼 URL : μ†Œλ¬Έμž + λͺ…사(μžμ›) + 언더바(x) λŒ€μ‹œ[-]둜 λ³€μˆ˜ν‚€μ›Œλ“œ μ •λ ¬ μˆœμ„œ :  private static final (PSF) 0. μžλ°” 곡..

thalals.tistory.com

https://tecoble.techcourse.co.kr/post/2020-04-26-Method-Naming/

 

쒋은 μ½”λ“œλ₯Ό μœ„ν•œ μžλ°” λ©”μ„œλ“œ 넀이밍

tecoble.techcourse.co.kr

 

πŸ€ κ³ λ―Όν–ˆλ˜ 지점듀

 

#μ»€λ°‹λ©”μ‹œμ§€

μ²˜μŒμ—λŠ” μ΄μ œκΉŒμ§€ 늘 ν•΄μ™”λ˜ λŒ€λ‘œ

<컀밋 νƒ€μž…:μ»€λ°‹λ©”μ‹œμ§€> 둜 ν–ˆμ—ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λ ‡κ²Œ ν•˜λ‹ˆ μƒκ²Όλ˜ λ¬Έμ œμ μ€

 

1. λ¬Έμ œκ°€ μ—¬λŸ¬κ°œμ΄λ‹€λ³΄λ‹ˆ λΉ„μŠ·ν•œ 컀밋 λ©”μ‹œμ§€κ°€ 많이 생길 것

2. μ–΄λ–€ λ¬Έμ œμ— λŒ€ν•œ 컀밋인지 λͺ…ν™•ν•˜μ§€ μ•ŠμŒ

 

이 μžˆμ—ˆλ‹€. κ·Έλž˜μ„œ μŠ¬λž™μ—μ„œ μ–΄λ–€ 뢄이 보내주신 μ•„λž˜ 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•΄λ³΄λ €κ³  ν–ˆλ‹€.

 

https://html-jc.tistory.com/457?category=946831 

 

[μš°ν…Œμ½˜2022] 우리 νŒ€μ˜ μ½”λ“œλ¦¬λ·° λ¬Έν™”, μ΄λ ‡κ²Œ μ‘°κΈˆμ”© λ°œμ „ν–ˆμ–΄μš” - (3) μ½”λ“œλ¦¬λ·° λ¬Έν™”, μ΄λ ‡κ²Œ 개

μ΄μ „μ—λŠ” μ΄λ ‡κ²Œ ν–ˆλŠ”λ° commit둜그λ₯Ό λ³Όλ•Œ 가독성이 μ’‹μ§€ μ•Šμ•˜λ‹€. κ·Έλž˜μ„œ ν™”λ©΄κ³Ό 같이 제λͺ©μ„ μž‘μ„±ν•˜λŠ” κ·œμΉ™μ„ λ§Œλ“€μ–΄ 가독성을 λ†’μ˜€λ‹€κ³ ν•œλ‹€. ν™•μ‹€νžˆ 이전보닀 가독성이 μ›”λ“±νžˆ λ†’μ•„μ§„ 것 κ°™λ‹€

html-jc.tistory.com

 

λ‚΄κ°€ μ„ νƒν•œ 컀밋 λ©”μ‹œμ§€μ˜ 방식은 <μ»€λ°‹νƒ€μž…(problem 문제번호):컀밋 λ©”μ‹œμ§€> μ˜€λ‹€. λ˜ν•œ μ΅œλŒ€ν•œ 컀밋 λ©”μ‹œμ§€λ„ λ¬Έμ œλ³„λ‘œ ν†΅μΌν•˜κ³ μž λ…Έλ ₯ν–ˆλ‹€.

 

#κΈ°λŠ₯ κ΅¬ν˜„ 사항 정리

 

κΈ°λŠ₯ κ΅¬ν˜„ 사항을 정리해야 ν•  λ•Œ μ²˜μŒμ—λŠ” 많이 ν—·κ°ˆλ¦¬κ³  μŠ΅κ΄€μ²˜λŸΌ μ½”λ“œλ₯Ό μ§œλ‹€κ°€ 'μ•„ λ§žλ‹€! κΈ°λŠ₯ κ΅¬ν˜„ 사항 정리해야지' ν•˜λŠ” 생각을 ν•˜κ²Œ 됐닀. κ·ΈλŸ¬λ‚˜ λͺ‡λ²ˆ λ°˜λ³΅ν•΄λ³΄λ‹ˆ μ–΄λŠ μ •λ„μ˜ 루틴이 μž‘ν˜”λ‹€.

λ˜ν•œ problem1~6κΉŒμ§€λŠ” λͺ¨λ‘ κΈ°λŠ₯을 λͺ¨ν˜Έν•˜κ²Œ μ •λ¦¬ν•΄λ‘μ—ˆμ—ˆλ‹€. κ·ΈλŸ¬λ‚˜ problem 7에 μ™€μ„œ λ“  생각이 λ©”μ„œλ“œλͺ…κΉŒμ§€ 미리 생각해두면 λͺ…ν™•ν•˜κ² λ‹€ ν•˜λŠ” κ²ƒμ΄μ—ˆλ‹€. κ·Έλž˜μ„œ κ·Έ μ΄ν›„λ‘œλŠ” λ§ˆμ§€λ§‰ 문제인 problem7μ—μ„œλŠ” λ©”μ„œλ“œλͺ…κΉŒμ§€ 미리 μ •ν•΄λ‘μ—ˆλ‹€. μ΄λ ‡κ²Œ ν•˜λ‹ˆ λ©”μ„œλ“œλͺ…에 λŒ€ν•΄μ„œ 더 깊이 κ³ λ―Όν•˜κ²Œ 되고, κΈ°λŠ₯ κ΅¬ν˜„μ„ μͺΌκ°œλŠ” λ‹¨μœ„λ„ λͺ…ν™•ν•˜κ²Œ 기쀀이 μ •λ¦½λ˜λŠ” λŠλ‚Œμ΄μ—ˆλ‹€. 

 

# 곡톡

List λ₯Ό 써야 ν• κΉŒ Array λ₯Ό 써야 ν• κΉŒ 의문이 λ“€κ³  ν—·κ°ˆλ €μ„œ λ‚˜λ¦„λŒ€λ‘œμ˜ 기쀀을 μ •ν•΄μ•Όκ² λ‹€κ³  μƒκ°ν–ˆλ‹€.

 

Array
- 길이λ₯Ό λ°”κΏ€ 수 μ—†μŒ. λ©”λͺ¨λ¦¬ 관리에 이점.
- 인덱슀λ₯Ό ν†΅ν•œ 접근이 용이
- μ‚½μž…/μ‚­μ œμ— 뢈리
List
- μ‚½μž…/μ‚­μ œκ°€ 용이
- λ©”λͺ¨λ¦¬ μž¬μ‚¬μš©μ΄ 편리
- λΆˆμ—°μ†μ 
- κ²€μƒ‰μ˜ μ„±λŠ₯이 μ’‹μ§€ μ•ŠμŒ
- 좔가적인 λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ λ°œμƒ (포인터λ₯Ό μ‚¬μš©ν•΄μ„œ)

 

λ©”λͺ¨λ¦¬κ°€ κ³ μ •λ˜κ³  μ—…λ°μ΄νŠΈλ‚˜ μ‚­μ œκ°€ μ—†μœΌλ©° 인덱슀λ₯Ό ν†΅ν•œ μ ‘κ·Όλ§Œ μ΄λ£¨μ–΄μ§€λŠ” κ²½μš°μ—λŠ” Arrayλ₯Ό μ‚¬μš©ν•˜κ³ ,

μΈλ±μŠ€κ°€ μ•„λ‹ˆλΌ μš”μ†Œκ°€ ν¬ν•¨λ˜μ–΄μžˆλŠ”μ§€ 확인해야 ν•˜λŠ” 경우, μ—…λ°μ΄νŠΈλ‚˜ μ‚­μ œκ°€ λΉˆλ²ˆν•œ κ²½μš°μ—λŠ” List λ₯Ό 써야겠닀고 λ‚˜λ¦„μ˜ 기쀀을 μ •λ¦½ν–ˆλ‹€.

 


 

πŸ€ ν΄λ¦°μ½”λ“œ 체크리슀트

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

 


πŸ€ Problem 1

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

1. μ˜ˆμ™Έμ‚¬ν•­μ„ νŒλ‹¨ν•˜λŠ” 클래슀의 λ©”μ„œλ“œλ“€μ„ μ •μ μœΌλ‘œ λ‘˜ 것인가 μ•„λ‹Œκ°€ -> ν•΄λ‹Ή 클래슀 좔후에 μ‚­μ œν•¨

μ–΄λ–€ κ²½μš°μ— 정적 λ©”μ„œλ“œλ₯Ό ν™œμš©ν•˜λŠ”μ§€ ν™•μΈν•΄λ³΄μ•˜λ‹€.

  • μœ ν‹Έλ¦¬ν‹° 클래슀둜 μž‘μ„±λ˜κ³  λ³€ν™”λ₯Ό κ°€μ •ν•˜μ§€ μ•ŠμŒ
  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμŒ
  • μΈμŠ€ν„΄μŠ€ 생성에 μ˜μ‘΄ν•˜μ§€ μ•ŠμŒ
  • λ³€ν™”λ˜μ§€ μ•Šκ³  μ˜€λ²„λΌμ΄λ”© λ˜μ§€ μ•ŠμŒ

μœ νš¨μ„± 검사 ν΄λž˜μŠ€λŠ” μΈμŠ€ν„΄μŠ€λ‘œ 생성될 μ΄μœ κ°€ μ—†κ³ , 변화될 μ΄μœ λ„ μ—†κ³ , μ˜€λ²„λΌμ΄λ”© ν•  지점도 μ—†κΈ° λ•Œλ¬Έμ— 정적 λ©”μ„œλ“œλ‘œ μ„ μ–Έν•΄μ•Ό ν•œλ‹€λŠ” νŒλ‹¨μ„ λ‚΄λ Έλ‹€. λ”°λΌμ„œ 정적 λ©”μ„œλ“œλ‘œ μ„ μ–Έν•΄μ£Όμ—ˆλ‹€.

 

2. 점수 계산을 μ–΄λ””μ„œ ν•΄μ•Ό ν• κΉŒ

problem λ‚΄λΆ€? λ”°λ‘œ λΉΌμ•Ό ν• κΉŒ?

 

μ΅œλŒ€ν•œ Problem1 클래슀 자체λ₯Ό κ°€λ³κ²Œ κ°€μ Έκ°€κ³  μ‹Άμ—ˆλ‹€. ν•΄λ‹Ή ν΄λž˜μŠ€μ—μ„œλŠ” μ±…μ˜ νŽ˜μ΄μ§€λ₯Ό λ°›κ³ , 승자λ₯Ό νŒλ‹¨ν•˜λŠ” κΈ°λŠ₯만 ν–ˆμœΌλ©΄ μ’‹κ² λ‹€κ³  μƒκ°ν–ˆλ‹€. μ™œλƒν•˜λ©΄ 점수λ₯Ό κ³„μ‚°ν•˜λ©΄μ„œ λ”°μ Έμ•Ό ν•  뢀뢄듀이 μ‘΄μž¬ν•΄ μ½”λ“œκ°€ κΈΈμ–΄μ§€κ³  μžˆμ—ˆκΈ° λ•Œλ¬Έμ΄λ‹€. 

λ”°λΌμ„œ Calculator λΌλŠ” 클래슀λ₯Ό 두고, ν•΄λ‹Ή 클래슀 λ‚΄μ—μ„œ pobi 와 crong 의 점수 계산을 각각 ν•  수 μžˆλ„λ‘ ν–ˆλ‹€.

 

πŸ§™πŸ» λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ κ³ λ €ν–ˆλ˜ 점

+ λ¦¬νŒ©ν† λ§μ„ ν•˜λ˜ κ³Όμ •μ—μ„œ, Calculator ν΄λž˜μŠ€μ™€ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λ˜ InputException μ΄λΌλŠ” 클래슀λ₯Ό μ‚­μ œν•˜κ³  Score μ΄λΌλŠ” 클래슀λ₯Ό 생성해 μƒμ„±μžλ₯Ό 톡해 μœ νš¨μ„± 검사λ₯Ό ν•  수 μžˆλ„λ‘ ν–ˆλ‹€. μ΄λ ‡κ²Œ μ‚¬κ³ ν•˜κ²Œ 된 과정은 λ‹€μŒ 글을 μ°Έκ³ ν•΄μ„œμ΄λ‹€. 비둝, ν•΄λ‹Ή 글은 일급 μ»¬λ ‰μ…˜κ³Ό κ΄€λ ¨λ˜μ–΄ μžˆμ§€λ§Œ, λ‹€μŒκΈ€μ„ 보며 μƒμ„±μžλ₯Ό ν†΅ν•΄μ„œ μœ νš¨μ„±μ„ κ²€μ‚¬ν•˜λŠ” 것이 더 효율적일 κ²ƒμ΄λΌλŠ” 생각이 λ“€μ—ˆλ‹€. 

 

https://velog.io/@bosl95/%E3%85%87%E3%84%B9%E3%84%B4%E3%85%87

 

μžλ°”μ˜ 일급 μ»¬λ ‰μ…˜

μžλ°”μ˜ 일급 μ»¬λ ‰μ…˜μ— λŒ€ν•΄ μ•Œμ•„λ³΄μž

velog.io

 

μ΄λ ‡κ²Œ λ¦¬νŒ©ν† λ§μ„ 거치게 된 κ³„κΈ°λŠ”

 

1. ν΄λΌμ΄μ–ΈνŠΈ μ½”λ“œκ°€ try-catch ν˜•νƒœλ‘œ κ°œμ„ λ  수 μžˆλ‹€.

- μ΄μ „μ—λŠ” InputException 클래슀의 static λ©”μ„œλ“œλ₯Ό 일일이 λΆˆλŸ¬μ„œ if 문을 μ‚¬μš©ν•΄ μœ νš¨μ„± 검사λ₯Ό ν•΄μ•Ό ν–ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ΄λŠ” try-catch 문으둜 κ°œμ„ λ  수 μžˆμ„ 것이라고 μƒκ°ν–ˆλ‹€.

 

2. Calculator 의 클래슀λͺ…

- Calculator κ°€ κ³„μ‚°κΈ°λΌλŠ” 뜻으둜 μƒμ„±ν•œ κ²ƒμ΄μ—ˆλŠ”λ°, κ³„μ‚°κΈ°μ˜ κΈ°λŠ₯을 ν•˜λ €λ©΄ pobi 와 crong 의 각각 계산기λ₯Ό λ§Œλ“ λ‹€λŠ” μ˜λ―Έκ°€ λ…Όλ¦¬μ μœΌλ‘œ 쑰금 μ΄μƒν•˜κ²Œ 생각됐닀. 

 

κ·Έλž˜μ„œ μ§κ΄€μ μœΌλ‘œ Score λΌλŠ” 객체λ₯Ό μƒμ„±ν•˜κ³ , 이가 μœ νš¨ν•˜μ§€ μ•Šμ€ 값이라면 catch 둜 λ„˜μ–΄κ°€ λ°”λ‘œ μ˜ˆμ™Έ 상황에 ν•΄λ‹Ήν•˜λŠ” 값을 λ°˜ν™˜ν•˜λ„λ‘ ν–ˆκ³  μœ νš¨ν•œ 값이라면 μ •μƒμ μœΌλ‘œ Score 객체가 생성될 것이기에 클래슀 내뢀에 μ‘΄μž¬ν•˜λŠ” getMaxScore λ©”μ„œλ“œλ₯Ό 톡해 각 μ°Έκ°€μžμ˜ 졜고 점수λ₯Ό λΆˆλŸ¬μ™€ 비ꡐ할 수 μžˆλ„λ‘ ν–ˆλ‹€.

πŸ§™πŸ» 1번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… 🧐 βœ… 🧐 βœ… βœ… βœ… βœ… βœ… βœ… βœ…

- 3번 쑰건

쑰금 μ• λ§€ν•˜κ²Œ λŠκ»΄μ§„λ‹€.. 만일 ν•˜λ‚˜μ˜ νŽ˜μ΄μ§€ 자체둜 μœ νš¨μ„± 검사가 κ°€λŠ₯ν•˜κ±°λ‚˜ κ·Έ 자체둜 값을 κ°–λŠ” 것이 μ˜λ―Έκ°€ μžˆμ—ˆλ‹€λ©΄ Page λΌλŠ” 클래슀λ₯Ό μƒμ„±ν–ˆμ„ν…λ° ν•΄λ‹Ή 문제 상황을 고렀해보면 μ™Όμͺ½ νŽ˜μ΄μ§€ 였λ₯Έμͺ½ νŽ˜μ΄μ§€λ₯Ό 같이 λ³΄λ©΄μ„œ μœ νš¨μ„± 검사와 점수 계산을 ν•΄μ•Ό ν•΄μ„œ Page λΌλŠ” 객체λ₯Ό μƒμ„±ν•˜λŠ” 것이 μ˜λ―Έκ°€ μ—†κ²Œ λŠκ»΄μ‘Œλ‹€. κ·Έλž˜μ„œ κ·Έλƒ₯ list ν˜•νƒœ κ·ΈλŒ€λ‘œ Score ν΄λž˜μŠ€μ— κ°€μ Έμ™€μ„œ μ‚¬μš©ν–ˆλŠ”λ° 이게 μ΅œμ„ μΌμ§€λŠ” 확신이 μ„œμ§€ μ•ŠλŠ”λ‹€. 

- 4번 쑰건

μ•žμ„œ μ–ΈκΈ‰ν•œ μ΄μœ μ™€ λΉ„μŠ·ν•˜κ²Œ pages λΌλŠ” List κ°€ λ©€λ²„λ³€μˆ˜λ‘œ μžˆμ–΄μ„œ 고민을 ν–ˆλ‹€. 자꾸만 pages λΌλŠ” λ©€λ²„λ³€μˆ˜λͺ…이 page λΌλŠ” 객체의 μ½œλ ‰μ…˜μΈ 것 같은 λŠλ‚Œμ„ μ€˜μ„œ μ½”λ“œκ°€ λͺ¨ν˜Έν•΄μ§€λŠ” 것 κ°™λ‹€κ³  μƒκ°ν–ˆλ‹€.

 

κ°œμ„ 

leftPage 와 rightPage λΌλŠ” λ©€λ²„λ³€μˆ˜λ₯Ό λ‘μ–΄μ„œ κ΄€λ¦¬ν•˜λŠ” κ²ƒμœΌλ‘œ λ³€κ²½ν–ˆλ‹€.

κ°œμ„  μ΄ν›„μ—λŠ” 3,4번 쑰건도 λ§Œμ‘±ν–ˆλ‹€κ³  μƒκ°λœλ‹€.

 


πŸ€ Problem 2

 

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

1. early continue μ‚¬μš©

private static String decrypt(String cryptogram) {
    Stack<Character> stack = new Stack<>();
    char[] chars = cryptogram.toCharArray();
    char before = ' ';

    for (char c : chars) {
        if (!stack.isEmpty() && stack.peek() == c) {
            stack.pop();
            before = c;
            continue;
        }
        if (c == before) {
            continue;
        }
        stack.push(c);
    }
    return changeStackToString(stack);
}

μ–΄λ–»κ²Œ else λ₯Ό μ“°μ§€ μ•Šκ³  ν•΄λ‹Ή 뢀뢄을 κ΅¬ν˜„ν•˜μ§€ ν•˜λŠ” 고민이 λ“€μ—ˆλ‹€. μ™œλƒν•˜λ©΄ else λ₯Ό μ“°μ§€ μ•Šκ³  if 문을 λ‘λ²ˆ μ“°κ²Œ 되면 두 κ°€μ§€ 쑰건에 λ‹€ 걸릴 μˆ˜λ„ μžˆλŠ” 상황이 λ°œκ²¬ν–ˆκΈ° λ•Œλ¬Έμ΄μ—ˆλ‹€. κ·Έλž˜μ„œ continue λ₯Ό 써도 λ˜λ‚˜ ν•˜λŠ” 생각이 λ“€μ–΄ μ°Ύμ•„λ³΄λ‹ˆ early return / early continue λ₯Ό ꢌμž₯ν•œλ‹€κ³  ν•˜μ—¬ ν•΄λ‹Ή 방법을 μ‚¬μš©ν–ˆλ‹€.

 

πŸ§™πŸ» 2번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…

- 8번 쑰건

λ””λ―Έν„°μ˜ 법칙이 streamκ³Ό 같이 . 을 많이 써야 ν•˜λŠ” κ²½μš°μ—λ„ κ°•μ œλ˜λŠ” 것인지 κΆκΈˆν•΄μ„œ μ°Ύμ•„λ΄€λ”λ‹ˆ μ•„λ‹ˆλΌκ³  ν•œλ‹€. λ””λ―Έν„°μ˜ 법칙은 μΊ‘μŠν™”μ™€ 객체의 λ‚΄λΆ€ ꡬ쑰가 μœ μΆœλ˜μ§€ μ•ŠλŠ” 것이 λͺ©μ μ΄κΈ°μ— stream API λŠ” 이λ₯Ό μœ„λ°°ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것이닀.

 


πŸ€ Problem 3

πŸ§™πŸ» 3번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…

πŸ€ Problem 4

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

1. string buffer μ‚¬μš©

μ²˜μŒμ—λŠ” λ‹¨μˆœνžˆ λ¬Έμžμ—΄μ„ λ”ν•˜κΈ° μ—°μ‚°μœΌλ‘œ λΆ™μΌκΉŒ buffer λ₯Ό μ΄μš©ν• κΉŒ κ³ λ―Όν–ˆλ‹€.

계속 λ”ν•˜κΈ° 연산을 ν•˜λŠ” 것, buffer λ₯Ό μƒμ„±ν•˜λŠ” 것 쀑 μ–΄λ–€ 것이 더 μ†λ„λ‚˜ λ©”λͺ¨λ¦¬ μΈ‘λ©΄μ—μ„œ νš¨μœ¨μ μΈμ§€ 고민을 ν•΄λ³΄μ•˜λ‹€.

concat ν˜Ήμ€ + λ₯Ό μ‚¬μš©ν•˜κ²Œ 되면 1000번 이상 μ‚¬μš©ν•  경우 속도가 λŠλ €μ§€κΈ° λ•Œλ¬Έμ— λΉ„νš¨μœ¨μ μΈ κ²°κ³Όλ₯Ό 낳을 수 μžˆμœΌλ―€λ‘œ String Builder λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•œλ‹€κ³  ν–ˆλ‹€. ν•΄λ‹Ή 문제의 경우 해석해야 ν•˜λŠ” word의 길이가 1~1000이라고 ν–ˆμœΌλ―€λ‘œ μ•„μŠ¬μ•„μŠ¬ν•˜λ‹€κ³  생각해 buffer λ₯Ό 생성해 μ‚¬μš©ν•΄μ£Όμ—ˆλ‹€.

 

https://wakestand.tistory.com/245

 

μžλ°” StringBuffer, StringBuilder κ°œλ…λΆ€ν„° μ‚¬μš©λ²•κΉŒμ§€

μžλ°”μ—μ„œ String 외에도 StringBuffer와 StringBuilderκ°€ μžˆλŠ”λ° 보면 λ­” μš©λ„λ‘œ μ“°λŠ”μ§€ 감이 μ•ˆμ˜¬ 것이닀 appendλ₯Ό μ΄μš©ν•΄μ„œ 값을 뢙일 수 μžˆλ‹€κ³ λŠ” ν•˜λŠ”λ° 그건 String도 .concat(κ°’) ν˜Ήμ€ + "κ°’" 을 μ‚¬μš©ν•΄ λΆ™..

wakestand.tistory.com

 

πŸ§™πŸ» λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ κ³ λ €ν–ˆλ˜ 점

solution λ©”μ„œλ“œλŠ” 닡을 λ°˜ν™˜ν•˜λŠ” μ •λ„μ˜ κΈ°λŠ₯만 ν•˜λŠ” 것을 λͺ©ν‘œλ‘œ μž‘μ•˜κΈ°μ— solution λ©”μ„œλ“œμ—μ„œ λ°˜λ³΅ν•˜λ˜ λ°˜λ³΅λ¬Έμ„ getDecryptedWord λΌλŠ” λ©”μ„œλ“œλ‘œ λΉΌμ„œ κ΅¬ν˜„ν–ˆλ‹€.

 

πŸ§™πŸ» 4번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…

πŸ€ Problem 5

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

1. 배열을 λ°˜ν™˜ν•˜λŠ” λ©”μ„œλ“œμ˜ 경우 μ–΄λ–»κ²Œ λ©”μ„œλ“œλͺ…을 μ§€μ–΄μ•Ό ν• κΉŒ

 

λ‹€μŒ 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ getAllCntByUnit 이라고 μ§€μ—ˆλ‹€.

 

https://stackoverflow.com/questions/9340394/best-way-to-name-methods-that-returns-list-of-objects

 

Best way to name methods that returns list of objects

I have a class named ActivityLog. This class holds a list of ActivityRecords. I want to return a list of ActivityRecords by these criterias: Environment and Condition. Should the method name includ...

stackoverflow.com

 

πŸ§™πŸ» 5번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ…

πŸ€ Problem 6

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

 

1. μ†Œμœ κ²©μ„ λ‚˜νƒ€λ‚΄μ•Ό ν•˜λŠ” 경우 μ–΄λ–»κ²Œ λ©”μ„œλ“œλͺ…을 μ§€μ–΄μ•Ό ν• κΉŒ

 

λ‹€μŒ 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ for λ₯Ό μ‚¬μš©ν–ˆλ‹€. ex) saveInfoForStudent

https://stackoverflow.com/questions/2034679/how-do-you-work-around-the-need-for-apostrophes-in-certain-function-names

 

How do you work around the need for apostrophes in certain function names?

When I'm programming, I often find myself writing functions that -should- (to be proper english) contain apostrophes (too bad C started everyone thinking that an apostrophe was an appropriate delim...

stackoverflow.com

πŸ§™πŸ» λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ κ³ λ €ν–ˆλ˜ 점

1. λ³€μˆ˜λͺ…

final 인 λ³€μˆ˜λͺ…을 κ·œμΉ™μ— 맞게 studentsInfo -> STUDENTS_INFO -> INFO_FOR_STUDENTS 둜 λ°”κΏ¨λ‹€.

 

πŸ§™πŸ» 6번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… βœ… βœ… βœ… βœ… πŸ§βœ… βœ…

- 9번 쑰건

saveInfoForStudent λ©”μ„œλ“œμ—μ„œ λ¬Έμžμ—΄μ„ 일일이 돌며 (1) λ¬Έμžμ—΄μ„ 자λ₯΄λŠ” λ™μ‹œμ— (2)ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ 이미 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜κ³  (3) 2의 결과에 따라 μ €μž₯을 ν•˜λŠ” κΈ°λŠ₯κΉŒμ§€ κ΅¬ν˜„ν•΄μ„œ κ°œμ„ ν•΄μ•Όκ² λ‹€λŠ” 생각을 ν•˜κ²Œ λ˜μ—ˆλ‹€.

 

κ°œμ„ 

Student 클래슀λ₯Ό μƒˆλ‘œ μƒμ„±ν•˜μ—¬ email κ³Ό name 을 μ €μž₯ν•˜κ³  ν•΄λ‹Ή 클래슀 λ‚΄λΆ€μ—μ„œ getSubNames λΌλŠ” λ©”μ„œλ“œλ₯Ό 생성해 ν•™μƒμ˜ λΆ€λΆ„ λ¬Έμžμ—΄λ“€μ„ λ°˜ν™˜ν•˜λŠ” κΈ°λŠ₯을 κ΅¬ν˜„ν–ˆλ‹€.

 


πŸ€ Problem 7

πŸ§™πŸ» μ½”λ“œλ₯Ό κ΅¬ν˜„ν•˜λ©΄μ„œ κ³ λ €ν–ˆλ˜ 점

1. μ–΄λ–»κ²Œ μ •λ ¬ 기쀀을 μ •ν•˜κ³  μ •λ ¬ν•˜λŠ” 것이 κ°€μž₯ νš¨μœ¨μ μΌμ§€

λ‹€μŒ 링크λ₯Ό μ°Έκ³ ν•˜μ—¬ comparator λ₯Ό μ‚¬μš©ν–ˆλ‹€.

https://st-lab.tistory.com/243

 

μžλ°” [JAVA] - Comparable κ³Ό Comparator의 이해

μ•„λ§ˆ 이 글을 μ°Ύμ•„ μ˜€μ‹  λΆ„λ“€ λŒ€κ°œλŠ” Comparableκ³Ό Comparator의 차이가 무엇인지 λͺ¨λ₯΄κ±°λ‚˜ κΆκΈˆν•΄μ„œ μ°Ύμ•„μ˜€μ…¨μ„ 것이닀. 사싀 μ•Œκ³ λ³΄λ©΄ 두 κ°œλŠ” κ·Έλ ‡κ²Œ μ–΄λ ΅μ§€ μ•ŠμœΌλ‚˜ μ•„λ¬΄λž˜λ„ μžλ°”λ₯Ό ν•™μŠ΅ν•˜λ©΄μ„œ 객

st-lab.tistory.com

2. μ–΄λ–»κ²Œ μ •λ ¬ 기쀀을 μ •ν•˜κ³  μ •λ ¬ν•˜λŠ” 것이 κ°€μž₯ νš¨μœ¨μ μΌμ§€

 

πŸ§™πŸ» λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ κ³ λ €ν–ˆλ˜ 점

λ³€μˆ˜λͺ… / λ©”μ„œλ“œλͺ…을 많이 κ³ λ―Όν–ˆλ‹€. μ†Œμœ κ²©μ„ λ‚˜νƒ€λ‚΄λŠ” by 와 ~에 μ˜ν•΄μ„œλ₯Ό λ‚˜νƒ€λ‚΄λŠ” by κ°€ μΆ©λŒν–ˆκΈ° λ•Œλ¬Έμ΄λ‹€.

예λ₯Ό λ“€μ–΄μ„œ getRelationshipByUser 은 user 의 관계λ₯Ό κ°€μ Έμ˜€λŠ” λ©”μ„œλ“œμ΄κ³ , getScoresByOverlappedUsers λŠ” κ²ΉμΉ˜λŠ” μ‚¬μš©μžμ— μ˜ν•˜μ—¬ 점수λ₯Ό κ΅¬ν•˜λŠ” λ©”μ„œλ“œμ΄κΈ° λ•Œλ¬Έμ΄λ‹€. μ „μžλŠ” ~의 즉 μ†Œμœ κ²©μ΄κ³  ν›„μžλŠ” ~에 μ˜ν•΄μ„œλ₯Ό λ‚˜νƒ€λ‚΄μ„œ λ©”μ„œλ“œλͺ…이 슀슀둜 μ“°λ©΄μ„œλ„ ν—·κ°ˆλ Έλ‹€. κ·Έλž˜μ„œ μ „μžλŠ” for / ν›„μžλŠ” by 둜 ν†΅μΌν–ˆλ‹€.

λ˜ν•œ, μ‚¬μš©μžκ°€ μ„Έ κ°€μ§€ μ’…λ₯˜κ°€ μžˆλ‹€κ³  μƒκ°ν–ˆλ‹€.

1. 친ꡬ인 μ‚¬μš©μž

2. μΉœκ΅¬κ°€ μ•„λ‹Œλ° μΆ”μ²œμΉœκ΅¬μΈ μ‚¬μš©μž

3. μΉœκ΅¬λ„ μ•„λ‹ˆκ³  μΆ”μ²œμΉœκ΅¬λ„ μ•„λ‹Œ μ‚¬μš©μž

κ·Έλž˜μ„œ User 둜 써야 ν• μ§€, Friend 둜 써야할지 ν—·κ°ˆλ Έλ‹€. λ˜ν•œ 이미 μ£Όμ–΄μ§„ νŒŒλΌλ―Έν„° 쀑에 friends λΌλŠ” 이름도 μžˆμ–΄μ„œ 더 μ• λ§€ν•˜λ‹€κ³  λŠκΌˆλ‹€. 

1 번의 κ²½μš°μ—λŠ” relationship μ΄λΌλŠ” μš©μ–΄λ₯Ό μ‚¬μš©ν–ˆκ³ , 아직 μΆ”μ²œμΉœκ΅¬μΌμ§€ 아닐지 λͺ¨λ₯΄λŠ” μ‚¬μš©μžλ“€μ— λŒ€ν•΄μ„œλŠ” User, μΆ”μ²œμΉœκ΅¬λ₯Ό κ΅¬ν•˜λŠ” κ²½μš°μ—λŠ” RecommendedFriend λΌλŠ” μš©μ–΄λ₯Ό μ‚¬μš©ν•΄μ„œ 일관성 있게 κ°€μ Έκ°€κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλ‹€.

 

πŸ§™πŸ» 7번의 ν΄λ¦°μ½”λ“œ 체크리슀트

더보기

1. ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

2. else μ˜ˆμ•½μ–΄λ₯Ό μ“°μ§€ μ•Šμ•˜λŠ”κ°€?

3. λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν–ˆλŠ”κ°€?

4. μ½œλ ‰μ…˜μ— λŒ€ν•΄ 일급 μ½œλ ‰μ…˜μ„ μ μš©ν–ˆλŠ”κ°€?

5. 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό κ°€μ§„ 클래슀λ₯Ό κ΅¬ν˜„ν•˜μ§€ μ•Šμ•˜λŠ”κ°€?

6. getter / setter 없이 κ΅¬ν˜„ν–ˆλŠ”κ°€?

7. λ©”μ†Œλ“œμ˜ 인자 수λ₯Ό μ œν•œν–ˆλŠ”κ°€?

8. μ½”λ“œ ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ ν—ˆμš©ν–ˆλŠ”κ°€?

9. λ©”μ†Œλ“œκ°€ ν•œ κ°€μ§€ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ κ΅¬ν˜„ν–ˆλŠ”κ°€?

10. 클래슀λ₯Ό μž‘κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν–ˆλŠ”κ°€?

1 2 3 4 5 6 7 8 9 10
βœ… βœ… βœ… βœ… 🧐 βœ… βœ… βœ… βœ… βœ…

- 5번 쑰건

ν˜„μž¬ User 클래슀의 μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ 5κ°œμ΄λ‹€ γ…œ.γ…œ μ΅œλŒ€ν•œ μ€„μ΄κ³ μž ν•΄λ³΄μ•˜μœΌλ‚˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό 일뢀 κ±·μ–΄λ‚Ό 경우 μ½”λ“œμ™€ 둜직이 λ„ˆλ¬΄ λ³΅μž‘ν•΄μ Έμ„œ μ–΄λ–»κ²Œ ꡬ상해야 ν• μ§€ 더 고민해봐야겠닀..


πŸ€ μ†Œκ°

1. μ•Œκ³  μžˆμ—ˆμ§€λ§Œ..

ν΄λ¦°μ½”λ“œλ₯Ό μ§€ν–₯ν•΄μ•Ό ν•˜κ³ , λͺ…ν™•ν•œ λ³€μˆ˜λͺ…κ³Ό λ©”μ„œλ“œλͺ…을 μ§€μ–΄μ•Ό ν•œλ‹€λŠ” 것도 μ•Œμ§€λ§Œ 늘 μ΄λ§Œν•˜λ©΄ 됐겠지 ν•˜λŠ” 생각에 μ§€λ‚˜μ³€λ˜ μ§€μ λ“€κΉŒμ§€λ„ κ³ λ―Όν•˜κ³  νŒŒκ³ λ“€λ €κ³  λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€. μ–΄λŠ μ •λ„μ˜ μ»¨λ²€μ…˜μ„ μ§€ν‚€λ©΄μ„œ μ½”λ“œλ₯Ό μ§œλ©΄μ„œλ„ λ‚˜λ§Œμ˜ μ½”λ“œ μŠ€νƒ€μΌκ³Ό 기쀀을 μ •λ¦½ν•΄κ°€λŠ” μ‹œκ°„μ΄ 된 것 κ°™μŠ΅λ‹ˆλ‹€. λ˜ν•œ μ ‘κ·Ό μ œμ–΄μž, static으둜 μ„ μ–Έν• μ§€ ν•˜μ§€ μ•Šμ„μ§€ λ“±κ³Ό 같은 뢀뢄듀은 κΈ°κ³„μ μœΌλ‘œ μ½”λ”©ν•΄μ˜€λ˜ λΆ€λΆ„μ΄μ—ˆμŠ΅λ‹ˆλ‹€. λΆ€λ„λŸ½μ§€λ§Œ, 이 과정을 ν†΅ν•΄μ„œ 객체 μ§€ν–₯적인 μ½”λ“œλž€ μ–΄λ–€ μ‚¬κ³ μ˜ κ³Όμ •μ˜ νλ¦„μœΌλ‘œ μ§œμ•Ό ν• μ§€ μ™œ μ ‘κ·Ό μ œμ–΄μžλ₯Ό 적절히 μ‚¬μš©ν•΄μ•Ό ν•˜λŠ”μ§€ μ΄μ œμ„œμ•Ό μ–΄λŠ 정도 깨달은 것 κ°™μŠ΅λ‹ˆλ‹€. μ €λŠ” λ‹€μŒ 지점듀을 κ³ λ €ν•˜λ©° μ½”λ“œλ₯Ό 짜고자 λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€.

 

- μ΅œλŒ€ν•œ ν΄λ¦°μ½”λ“œλ₯Ό μ§€ν–₯ν•˜λ©° μ§€ 것

- ν•¨λΆ€λ‘œ μ»€λ°‹ν•˜μ§€ μ•Šμ„ 것

- ν•˜λ‚˜μ˜ λ©”μ†Œλ“œλŠ” λ°˜λ“œμ‹œ ν•œ κ°€μ§€μ˜ 일만 λ‹΄λ‹Ήν•˜λ„λ‘ ν•  것

- λ©”μ„œλ“œλͺ…을 ν—ˆνˆ¬λ‘œ μ§“μ§€ μ•Šμ„ 것

 

2. κ³ λ―Όν•˜λŠ” νž˜μ„ κΈ°λ₯΄κΈ°

κ³ λ―Όν•˜λŠ” νž˜μ„ κΈ°λ₯΄λŠ” 것이 코딩에 μžˆμ–΄ μ€‘μš”ν•œ 덕λͺ©μ΄λΌλŠ” 생각이 λ“€μ—ˆμŠ΅λ‹ˆλ‹€. μž‘μ€ 것 ν•˜λ‚˜ μ§€λ‚˜μΉ˜μ§€ μ•Šκ³  κΎΈμ€€νžˆ, λ™μ‹œμ— 'μ˜¬λ°”λ₯Έ' λ°©ν–₯으둜 κ³ λ―Όν•΄ λ‚˜κ°€λŠ” 것이 ν•„μš”ν•˜λ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€. μ½”λ“œ μƒμ˜ 둜직 뿐만 μ•„λ‹ˆλΌ μ–Έμ–΄λ‘œμ„œλ„, λ…Όλ¦¬μ μœΌλ‘œλ„ 말이 λ˜λŠ”μ§€λ₯Ό κ³„μ†ν•΄μ„œ λ”°μ Έλ³΄κ³ μž ν–ˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ λ©”μ„œλ“œ λͺ…을 지을 λ•Œλ‚˜ 클래슀 λͺ…을 지을 λ•Œ 전체적인 문제의 상황을 νŒŒμ•…ν•˜λ©° μ—¬κΈ°μ„œ 계산기λ₯Ό μƒμ„±ν•˜λŠ”κ²Œ μƒν™©μ μœΌλ‘œ λ§žμ„μ§€, 학생 자체의 클래슀λ₯Ό μƒμ„±ν•΄μ„œ 정보λ₯Ό μ €μž₯ν•˜κ³  점수λ₯Ό λ„˜κΈ°λŠ”κ²Œ λ§žμ„μ§€μ™€ 같은 상황적인 고렀도 μ§€μ†ν•˜κ³ μž λ…Έλ ₯ν–ˆμŠ΅λ‹ˆλ‹€.

 

3. ν΄λ¦°μ½”λ“œλŠ” μ΄λ ‡κ²Œ ν•΄μ•Ό ν•˜λŠ”κ΅¬λ‚˜

ν΄λ¦°μ½”λ“œμ— λŒ€ν•œ λ§‰μ—°ν•œ 생각은 μžˆμ—ˆμ§€λ§Œ μ΄λŠ” 아직 λ‚˜μ˜ μ˜μ—­μ΄ μ•„λ‹ˆλΌκ³  생각해 λ°©μΉ˜ν•΄λ‘κ³  μžˆμ—ˆλ˜ λ¬Έμ œμ˜€μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜, ν΄λ¦°μ½”λ“œ 원칙을 μ§€ν‚€λ©΄μ„œ μ½”λ“œλ₯Ό μ§œλ‹ˆ μŠ€μŠ€λ‘œλ„ μ½”λ“œλ₯Ό μ§œλ©΄μ„œ 둜직이 ν—·κ°ˆλ¦¬μ§€ μ•Šκ³  λͺ…ν™•ν•˜κ²Œ 보여 도움이 λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν΄λ¦°μ½”λ“œμ˜ ν•„μš”μ„±μ„ μ—¬μ‹€νžˆ λŠλ‚„ 수 μžˆλŠ” κΈ°νšŒμ˜€μŠ΅λ‹ˆλ‹€.

 

 

λŒ“κΈ€
곡지사항
μ΅œκ·Όμ— 올라온 κΈ€
μ΅œκ·Όμ— 달린 λŒ“κΈ€
Total
Today
Yesterday
링크
TAG
more
Β«   2025/06   Β»
일 μ›” ν™” 수 λͺ© 금 ν† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
κΈ€ 보관함