Skip to content

πŸ“” μ΄νŽ™ν‹°λΈŒ μ½”ν‹€λ¦° μŠ€ν„°λ”” μ €μž₯μ†Œ

Notifications You must be signed in to change notification settings

JuHyun419/effective-kotlin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

8 Commits
Β 
Β 

Repository files navigation

μ΄νŽ™ν‹°λΈŒ μ½”ν‹€λ¦° μŠ€ν„°λ””


🎯λͺ©ν‘œ

  • μ΄νŽ™ν‹°λΈŒ μ½”ν‹€λ¦° 완독
  • 곡뢀할 λ‚΄μš©: 1μž₯ ~ 8μž₯ (μ•„μ΄ν…œ 52)

πŸ‘₯μ°Έμ—¬ 인원


πŸ“š μ±… νŽ˜μ΄μ§€(379p)

1λΆ€: 쒋은 μ½”λ“œ

1μž₯ μ•ˆμ •μ„± (3p ~ 68p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 1: 가변성을 μ œν•œν•˜λΌ λ°°μ€€ν˜•
μ•„μ΄ν…œ 2: λ³€μˆ˜μ˜ μŠ€μ½”ν”„λ₯Ό μ΅œμ†Œν™”ν•˜λΌ κ³ κ΄‘ν‘œ
μ•„μ΄ν…œ 3: μ΅œλŒ€ν•œ ν”Œλž«νΌ νƒ€μž…μ„ μ‚¬μš©ν•˜μ§€ 말라 배은지
μ•„μ΄ν…œ 4: inferred νƒ€μž…μœΌλ‘œ λ¦¬ν„΄ν•˜μ§€ 말라 μ „νƒœκ²½
μ•„μ΄ν…œ 5: μ˜ˆμ™Έλ₯Ό ν™œμš©ν•΄ μ½”λ“œμ— μ œν•œμ„ 걸어라 μ΄μ£Όν˜„
μ•„μ΄ν…œ 6: μ‚¬μš©μž μ •μ˜ 였λ₯˜λ³΄λ‹€λŠ” ν‘œμ€€ 였λ₯˜λ₯Ό μ‚¬μš©ν•˜λΌ μ΄κ·œλ΄‰
μ•„μ΄ν…œ 7: κ²°κ³Ό 뢀쑱이 λ°œμƒν•  경우 nullκ³Ό Failureλ₯Ό μ‚¬μš©ν•˜λΌ 배은지
μ•„μ΄ν…œ 8: μ μ ˆν•˜κ²Œ null을 μ²˜λ¦¬ν•˜λΌ κ³ κ΄‘ν‘œ
μ•„μ΄ν…œ 9: useλ₯Ό μ‚¬μš©ν•˜μ—¬ λ¦¬μ†ŒμŠ€λ₯Ό 닫아라 μ΄μ£Όν˜„
μ•„μ΄ν…œ 10: λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό λ§Œλ“€μ–΄λΌ λ°°μ€€ν˜•

2μž₯ 가독성 (69p ~ 106p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 11: 가독성을 λͺ©ν‘œλ‘œ μ„€κ³„ν•˜λΌ μ „νƒœκ²½
μ•„μ΄ν…œ 12: μ—°μ‚°μž μ˜€λ²„λ‘œλ“œλ₯Ό ν•  λ•ŒλŠ” μ˜λ―Έμ— 맞게 μ‚¬μš©ν•˜λΌ μ΄κ·œλ΄‰
μ•„μ΄ν…œ 13: Unit?을 λ¦¬ν„΄ν•˜μ§€ 말라 μ΄μ£Όν˜„
μ•„μ΄ν…œ 14: λ³€μˆ˜ νƒ€μž…μ΄ λͺ…ν™•ν•˜κ²Œ 보이지 μ•ŠλŠ” 경우 ν™•μ‹€ν•˜κ²Œ μ§€μ •ν•˜λΌ μ΄κ·œλ΄‰
μ•„μ΄ν…œ 15: λ¦¬μ‹œλ²„λ₯Ό λͺ…μ‹œμ μœΌλ‘œ μ°Έμ‘°ν•˜λΌ μ „νƒœκ²½
μ•„μ΄ν…œ 16: ν”„λ‘œνΌν‹°λŠ” λ™μž‘μ΄ μ•„λ‹ˆλΌ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚΄μ•Ό ν•œλ‹€ κ³ κ΄‘ν‘œ
μ•„μ΄ν…œ 17: 이름 μžˆλŠ” μ•„κ·œλ¨ΌνŠΈλ₯Ό μ‚¬μš©ν•˜λΌ 배은지
μ•„μ΄ν…œ 18: μ½”λ”© μ»¨λ²€μ…˜ μ§€μΌœλΌ λ°°μ€€ν˜•

2λΆ€: μ½”λ“œ 섀계

3μž₯ μž¬μ‚¬μš©μ„± (109p ~ 152p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 19: knowledgeλ₯Ό λ°˜λ³΅ν•˜μ§€ 말라
μ•„μ΄ν…œ 20: 일반적인 μ•Œκ³ λ¦¬μ¦˜μ„ λ°˜λ³΅ν•΄μ„œ κ΅¬ν˜„ν•˜μ§€ 말라
μ•„μ΄ν…œ 21: 일반적인 ν”„λ‘œνΌν‹° νŒ¨ν„΄μ€ ν”„λ‘œνΌν‹° μœ„μž„μœΌλ‘œ λ§Œλ“€μ–΄λΌ
μ•„μ΄ν…œ 22: 일반적인 μ•Œκ³ λ¦¬μ¦˜μ„ κ΅¬ν˜„ν•  λ•Œ μ œλ„€λ¦­μ„ μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 23: νƒ€μž… νŒŒλΌλ―Έν„°μ˜ μ„€λ„μž‰μ„ ν”Όν•˜λΌ
μ•„μ΄ν…œ 24: μ œλ„€λ ‰ νƒ€μž…κ³Ό variance ν•œμ •μžλ₯Ό ν™œμš©ν•˜λΌ
μ•„μ΄ν…œ 25: 곡톡 λͺ¨λ“ˆμ„ μΆ”μΆœν•΄μ„œ μ—¬λŸ¬ ν”Œλž«νΌμ—μ„œ μž¬μ‚¬μš©ν•˜λΌ

4μž₯ 좔상화 섀계 (153p ~ 204p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 26: ν•¨μˆ˜ λ‚΄λΆ€μ˜ 좔상화 λ ˆλ²¨μ„ ν†΅μΌν•˜λΌ
μ•„μ΄ν…œ 27: λ³€ν™”λ‘œλΆ€ν„° μ½”λ“œλ₯Ό λ³΄ν˜Έν•˜λ €λ©΄ 좔상화λ₯Ό μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 28: API μ•ˆμ •μ„±μ„ ν™•μΈν•˜λΌ
μ•„μ΄ν…œ 29: μ™ΈλΆ€ APIλ₯Ό 랩(wrap)ν•΄μ„œ μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 30: μš”μ†Œμ˜ κ°€μ‹œμ„±μ„ μ΅œμ†Œν™”ν•˜λΌ
μ•„μ΄ν…œ 31: λ¬Έμ„œλ‘œ κ·œμ•½μ„ μ •μ˜ν•˜λΌ
μ•„μ΄ν…œ 32: 좔상화 κ·œμ•½μ„ μ§€μΌœλΌ

5μž₯ 객체 생성 (205p ~ 238p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 33: μƒμ„±μž λŒ€μ‹  νŒ©ν† λ¦¬ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 34: κΈ°λ³Έ μƒμ„±μžμ— 이름 μžˆλŠ” μ˜΅μ…˜ μ•„κ·œλ¨ΌνŠΈλ₯Ό μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 35: λ³΅μž‘ν•œ 객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ DSL을 λ§Œλ“€μ–΄λΌ

6μž₯ 클래슀 섀계 (239p ~ 300p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 36: μƒμ†λ³΄λ‹€λŠ” μ»΄ν¬μ§€μ…˜μ„ μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 37: 데이터 집합 ν‘œν˜„μ— data ν•œμ •μžλ₯Ό μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 38: μ—°μ‚° λ˜λŠ” μ•‘μ…˜μ„ 전달할 λ•Œ μΈν„°νŽ˜μ΄μŠ€ λŒ€μ‹  ν•¨μˆ˜ νƒ€μž…μ„ μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 39: νƒœκ·Έ ν΄λž˜μŠ€λ³΄λ‹€λŠ” 클래슀 계측을 μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 40: equals의 κ·œμ•½μ„ μ§€μΌœλΌ
μ•„μ΄ν…œ 41: hashCode의 κ·œμ•½μ„ μ§€μΌœλΌ
μ•„μ΄ν…œ 42: compareTo의 κ·œμ•½μ„ μ§€μΌœλΌ
μ•„μ΄ν…œ 43: API의 ν•„μˆ˜μ μ΄μ§€ μ•ŠλŠ” 뢀뢄을 ν™•μž₯ ν•¨μˆ˜λ‘œ μΆ”μΆœν•˜λΌ
μ•„μ΄ν…œ 44: 멀버 ν™•μž₯ ν•¨μˆ˜μ˜ μ‚¬μš©μ„ ν”Όν•˜λΌ

3λΆ€: νš¨μœ¨μ„±

7μž₯ λΉ„μš© 쀄이기 (303p ~ 346p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 45: λΆˆν•„μš”ν•œ 객체 생성을 ν”Όν•˜λΌ
μ•„μ΄ν…œ 46: ν•¨μˆ˜ νƒ€μž… νŒŒλΌλ―Έν„°λ₯Ό κ°–λŠ” ν•¨μˆ˜μ— inline ν•œμ •μžλ₯Ό 뢙여라
μ•„μ΄ν…œ 47: 인라인 클래슀의 μ‚¬μš©μ„ κ³ λ €ν•˜λΌ
μ•„μ΄ν…œ 48: 더 이상 μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 객체의 레퍼런슀λ₯Ό μ œκ±°ν•˜λΌ

8μž₯ 효율적인 μ»¬λ ‰μ…˜ 처리 (347p ~ 372p)

μ•„μ΄ν…œ λ°œν‘œμžλ£Œ
μ•„μ΄ν…œ 49: ν•˜λ‚˜ μ΄μƒμ˜ 처리 단계λ₯Ό 가진 κ²½μš°μ—λŠ” μ‹œν€€μŠ€λ₯Ό μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 50: μ»¬λ ‰μ…˜ 처리 단계 수λ₯Ό μ œν•œν•˜λΌ
μ•„μ΄ν…œ 51: μ„±λŠ₯이 μ€‘μš”ν•œ λΆ€λΆ„μ—λŠ” κΈ°λ³Έ μžλ£Œν˜• 배열을 μ‚¬μš©ν•˜λΌ
μ•„μ΄ν…œ 52: mutable μ»¬λ ‰μ…˜ μ‚¬μš©μ„ κ³ λ €ν•˜λΌ

πŸ“† κΈ°κ°„

  • 일정: 2024.12 ~ 2025.03
  • 맀 μ£Ό μˆ˜μš”μΌ 저녁 10μ‹œ 30λΆ„

πŸ– 인원 - 총 6λͺ…

  • μ•„μ΄ν…œ 선정은 λ°œν‘œκ°€ λλ‚œ ν›„ 사닀리 타기λ₯Ό 톡해 κ²°μ •ν•©λ‹ˆλ‹€.
    • μ•„μ΄ν…œμ€ μƒν˜Έ λ™μ˜ν•˜μ— λ‹€λ₯Έ λΆ„κ³Ό 변경이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

πŸ“œ 진행방식

  • μ•„μ΄ν…œ λ‹Ή 1λͺ…μ˜ 인원이 정리 ν›„ λ°œν‘œλ₯Ό μ§„ν–‰ν•©λ‹ˆλ‹€.
    • λ°œν‘œ 양식은 자유둭게 ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€. (λ…Έμ…˜, λ§ˆν¬λ‹€μš΄, λ§ˆμΈλ“œλ§΅, λΈ”λ‘œκ·Έ λ“±λ“±)
    • λ°œν‘œ μžλ£ŒλŠ” GitHub에 맀 μ£Ό μ—…λ°μ΄νŠΈλ₯Ό ν•  μ˜ˆμ •μž…λ‹ˆλ‹€.
  • (ꢌμž₯사항) λ‹€λ₯Έ μΈμ›μ˜ λ°œν‘œ λ‚΄μš©μ„ λ“£κ³  적극 질문 & ν”Όλ“œλ°±μ„ λΆ€νƒλ“œλ €μš”. πŸ™Œ
  • μŠ€ν„°λ””λŠ” νšŒμ°¨λ‹Ή 1~2μ‹œκ°„ 진행 μ˜ˆμ •μž…λ‹ˆλ‹€.

πŸ‘©πŸ»β€πŸ« λ°œν‘œ

  • 맀 μ£Ό 6개의 μ•„μ΄ν…œμ„ λ°œν‘œν•˜κ³ , 총 9~10μ£Ό 정도 진행할 μ˜ˆμ •μž…λ‹ˆλ‹€.
  • λ°œν‘œ μžλ£ŒλŠ” 가급적 λ°œν‘œ μ „κΉŒμ§€ 곡유 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.
    • λ°œν‘œ μ „ λ‹€λ₯Έ 뢄듀이 정리 자료λ₯Ό 미리 읽어보기 μœ„ν•¨μž…λ‹ˆλ‹€.
  • λ°œν‘œ μ‹œκ°„μ€ 5λΆ„ ~ 20λΆ„ λ‚΄μ™Έλ‘œ ν™”λ©΄ κ³΅μœ μ™€ ν•¨κ»˜ 자유둭게 ν•΄μ£Όμ„Έμš”.
  • μ•„μ΄ν…œ 별 λͺ¨λ“  λ‚΄μš©μ„ μ •λ¦¬ν•˜μ‹€ ν•„μš”λŠ” μ—†μŠ΅λ‹ˆλ‹€.

πŸ‘¨β€πŸ‘©β€πŸ‘§β€πŸ‘¦ 회고

  • 맀 μ£Ό λ°œν‘œκ°€ λλ‚œ ν›„ 각각 5λΆ„ λ‚΄μ™Έλ‘œ 자유둭게 토크 ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€. πŸ™‚
  • 책에 λŒ€ν•œ λŠλ‚€μ , λ‹€λ₯Έ λΆ„ λ°œν‘œμ— λŒ€ν•œ λŠλ‚€μ , 본인의 ν˜„μž¬ 상황, 이번주 상황, μ’‹μ•˜λ˜μΌ, 슬펐던일, νŠΉλ³„ν•œμΌ 먹고싢은것, ν•˜κ³ μ‹Άμ€κ²ƒ λ“±λ“± 자유둭게 ν•΄μ£Όμ‹œλ©΄ λ©λ‹ˆλ‹€.

About

πŸ“” μ΄νŽ™ν‹°λΈŒ μ½”ν‹€λ¦° μŠ€ν„°λ”” μ €μž₯μ†Œ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published