Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

🍏 2μ£Όμ°¨ μŠ€ν„°λ”” 과제 #18

Open
Jokwanhee opened this issue May 18, 2024 · 2 comments
Open

🍏 2μ£Όμ°¨ μŠ€ν„°λ”” 과제 #18

Jokwanhee opened this issue May 18, 2024 · 2 comments
Assignees

Comments

@Jokwanhee
Copy link
Contributor

πŸ¦– κ°œμš”

λ‹¨μœ„ ν…ŒμŠ€νŠΈμ— λŒ€ν•œ ν•™μŠ΅μ„ μ§„ν–‰ν•˜λ©°, Junit λΌμ΄λΈŒλŸ¬λ¦¬μ— μ΅μˆ™ν•΄μ§€λŠ” 과정을 μŠ€ν„°λ””ν•©λ‹ˆλ‹€.

객체지ν–₯ μƒν™œ 체쑰 원칙 9가지

κ·œμΉ™ 1: ν•œ λ©”μ„œλ“œμ— 였직 ν•œ λ‹¨κ³„μ˜ λ“€μ—¬μ“°κΈ°(indent)만 ν•œλ‹€.
κ·œμΉ™ 2: else μ˜ˆμ•½μ–΄λ₯Ό 쓰지 μ•ŠλŠ”λ‹€.
κ·œμΉ™ 3: λͺ¨λ“  μ›μ‹œκ°’κ³Ό λ¬Έμžμ—΄μ„ 포μž₯ν•œλ‹€.
κ·œμΉ™ 4: ν•œ 쀄에 점을 ν•˜λ‚˜λ§Œ μ°λŠ”λ‹€.
κ·œμΉ™ 5: 쀄여쓰지 μ•ŠλŠ”λ‹€(μΆ•μ•½ κΈˆμ§€).
κ·œμΉ™ 6: λͺ¨λ“  μ—”ν‹°ν‹°λ₯Ό μž‘κ²Œ μœ μ§€ν•œλ‹€.
κ·œμΉ™ 7: 3개 μ΄μƒμ˜ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό 가진 클래슀λ₯Ό 쓰지 μ•ŠλŠ”λ‹€.
κ·œμΉ™ 8: 일급 μ½œλ ‰μ…˜μ„ μ“΄λ‹€.
κ·œμΉ™ 9: κ²Œν„°/μ„Έν„°/ν”„λ‘œνΌν‹°λ₯Ό 쓰지 μ•ŠλŠ”λ‹€

ν…ŒμŠ€νŠΈ λŒ€μƒ ν•­λͺ© λ¦¬λ§ˆμΈλ“œ

κ΅¬κΈ€μ—μ„œ μ œμ•ˆν•˜λŠ” μ•±μ˜ 주된 ν…ŒμŠ€νŠΈ λŒ€μƒ ν•­λͺ©μ€Β κ΅¬κΈ€ ꢌμž₯ λ¬Έμ„œ 참쑰와 κ°™μŠ΅λ‹ˆλ‹€.

- λ‹¨μœ„ ν…ŒμŠ€νŠΈ λŒ€μƒ
    - ViewModels λ˜λŠ” Presenter
    - 데이터 λ ˆμ΄μ–΄
    - 유즈 μΌ€μ΄μŠ€
    - 값을 κ³„μ‚°ν•˜λŠ” μœ ν‹Έλ¦¬ν‹° 클래슀
- 엣지 μΌ€μ΄μŠ€
    - 음수, 0 및 경계 쑰건 을 μ‚¬μš©ν•˜λŠ” μˆ˜ν•™ μ—°μ‚°
    - κ°€λŠ₯ν•œ λͺ¨λ“  λ„€νŠΈμ›Œν¬ μ—°κ²° 였λ₯˜
    - ν˜•μ‹μ΄ 잘λͺ»λœ JSONκ³Ό 같은 μ†μƒλœ 데이터
    - 파일 μ €μž₯μ‹œ μŠ€ν† λ¦¬μ§€κ°€ 가득 μ°¬ 상황
    - ν”„λ‘œμ„ΈμŠ€ 쀑간에 λ‹€μ‹œ μƒμ„±λœ 개체(예: μž₯μΉ˜κ°€ νšŒμ „ν•  λ•Œμ˜ μ•‘ν‹°λΉ„ν‹°)
- UI ν…ŒμŠ€νŠΈ
    - 슀크린 UI
    - μœ μ € ν”Œλ‘œμš°
    - λ‚΄λΉ„κ²Œμ΄μ…˜
- ν…ŒμŠ€νŠΈ μ œμ™Έ λŒ€μƒ
    - ν”„λ ˆμž„μ›Œν¬ 자체의 λ™μž‘
    - activities, fragments, ν˜Ήμ€ servicesμ—λŠ” ν…ŒμŠ€νŠΈκ°€ ν•„μš”ν•œ λ‘œμ§μ„ κ°€λŠ₯ν•œ λ°°μΉ˜ν•˜μ§€ μ•ŠμŒ

πŸ˜Άβ€πŸŒ«οΈ μš”κ΅¬μ‚¬ν•­

  • ν…ŒμŠ€νŠΈ 클래슀 이름은 클래슀λͺ… 뒀에 Testλ₯Ό 뢙이도둝 ν•©λ‹ˆλ‹€.
class OperationTest() { ... }
  • λ‹¨μœ„ ν…ŒμŠ€νŠΈ ν•¨μˆ˜λŠ” Given-When-Then μŠ€νƒ€μΌ μ‚¬μš©ν•˜κΈ° (ν•¨μˆ˜ 이름은 μ˜μ–΄/ν•œκΈ€ 쀑 ν•˜λ‚˜ μ„ νƒν•΄μ„œ ν†΅μΌμ„±μžˆκ²Œ κ°€μ Έκ°€λ©΄ 쒋을듯!)
    • Given: μ–΄λ– ν•œ μƒνƒœν•˜μ—μ„œ
    • When: μ–΄λ– ν•œ κΈ°λŠ₯을 μ‹€ν–‰ν•˜λ©΄
    • Then: μ–΄λ– ν•œ κ²°κ³Όκ°€ λ‚˜μ™€μ•Ό ν•œλ‹€.
예λ₯Όλ“€μ–΄ x = 1일 λ•Œ(Given), 2λ₯Ό κ³±ν•˜λ©΄(When), 2κ°€ λ‚˜μ™€μ•Ό ν•˜λŠ”(Then) ν…ŒμŠ€νŠΈ λ©”μ†Œλ“œλŠ” λ‹€μŒκ³Ό 같은 ꡬ쑰λ₯Ό κ°–κ²Œ λ˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

@Test
fun x1_multiplyBy2_2() {
  // GIVEN
  val x = 1
  
  // WHEN
  val result = Utils.multipleBy2(x)
  
  // THEN
  assertEquals(2, result)
}

// ν•œκ΅­μ–΄ 버전
@Test
fun `x_κ³±ν•˜κΈ°2_2`() {
  val x = 1
  
  val result = Utils.multipleBy(x)
  
  assertEquals(2, result)
}
  • ν•˜λ‚˜μ˜ ν΄λž˜μŠ€λŠ” ν•˜λ‚˜μ˜ ν…ŒμŠ€νŠΈλ§Œ μ§„ν–‰ν•œλ‹€.
    • μ—¬λŸ¬ 클래슀λ₯Ό λŒ€μƒμœΌλ‘œ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•œλ‹€λ©΄, 그것은 ν†΅ν•©ν…ŒμŠ€νŠΈ!

μ‹€μŠ΅ 과제

μ°Έμ‘°ν•  μ½”λ“œλž© λ¬Έμ„œλ₯Ό ν™•μΈν•΄μ£Όμ„Έμš”.

  • μ½”λ“œλž© ν”„λ‘œκ·Έλž˜λ° 쀑 3개λ₯Ό μ„ νƒν•˜μ—¬, μžμ‹ λ§Œμ˜ μš”κ΅¬μ‚¬ν•­μ„ λ§Œλ“€κ³  ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•΄λ³΄μ„Έμš”.
  • μ½”λ“œλž©μ—μ„œ μ œκ³΅λ˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ„Έμ…˜ ν•˜λ‚˜λŠ” ν•˜λ‚˜μ˜ 클래슀λ₯Ό κ°€μ§‘λ‹ˆλ‹€.

✍️ μ •λ¦¬ν•΄λ³΄μ„Έμš”!

  • Unit Test (λ‹¨μœ„ ν…ŒμŠ€νŠΈ)
    • Local Unit Test
    • Instrumented Unit Test
  • Integration Test (톡합 ν…ŒμŠ€νŠΈ)
  • Junit
  • Mockito

πŸ‘» κ²°λ‘ 

λ‹¨μœ„ ν…ŒμŠ€νŠΈλ₯Ό μ§„ν–‰ν•˜λ©° ν…ŒμŠ€νŠΈμ— λŒ€ν•œ 이해λ₯Ό μ¦κ°€μ‹œν‚€κ³ , ν…ŒμŠ€νŠΈ 라이브러리λ₯Ό μ‚¬μš©ν•˜μ—¬ 이해λ₯Ό λ•λŠ”λ‹€.

@nodobi
Copy link
Contributor

nodobi commented Jun 6, 2024

이슈 νƒ€μ΄ν‹€μ΄λ‚˜ ν”„λ‘œμ νŠΈ 넀이밍을 인원듀이 톡일할 수 있게 λ‚΄μš©μ— μΆ”κ°€λ˜λŠ” 것도 쒋을 κ±° κ°™μ•„μš”!

@Jokwanhee
Copy link
Contributor Author

이슈 타이틀 ν†΅μΌν•œλ‹€

레포 이슈 타이틀을 "[쑰관희] ν…ŒμŠ€νŠΈ μ½”λ“œ μž‘μ„±" 의 ν˜•μ‹μ΄ ν†΅μΌν•˜λ©΄ 쒋을 것 κ°™λ‹€λŠ” μ˜κ²¬μ΄μ‹ κ°€μš”?

ν”„λ‘œμ νŠΈ 넀이밍을 ν†΅μΌν•œλ‹€

μ•ˆλ“œλ‘œμ΄λ“œ ν”„λ‘œμ νŠΈ 생성 μ‹œ, "AndroidStudy" 와 같이 폴더 넀이밍을 ν†΅μΌν•˜μžλŠ” μ˜κ²¬μ΄μ‹ κ°€μš”?

@nodobi
μ œκ°€ μ΄ν•΄ν•œ 뢀뢄이 맞으면, ν†΅μΌν•˜λŠ” 것도 λ„ˆλ¬΄ 쒋을 것 κ°™λ„€μš”!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants