λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

μ±… 리뷰/ν΄λ¦°μ½”λ“œ

[ν΄λ¦°μ½”λ“œ] 5. ν˜•μ‹ λ§žμΆ”κΈ°

읽은 λ‚ μ§œ : 2024.08.29
지은이 : λ‘œλ²„νŠΈ C. λ§ˆν‹΄
μΆœνŒμ‚¬ : μΈμ‚¬μ΄νŠΈ 

 

βœ”οΈ κΈ°μ–΅ν•˜κ³  싢은 λ‚΄μš©

μ™œ ν˜•μ‹μ„ λ§žμΆ°μ•Ό ν•˜λŠ”κ°€?

  • μ½”λ“œ ν˜•μ‹μ€ μ˜μ‚¬μ†Œν†΅μ˜ μΌν™˜μ΄λ‹€.
  • μ½”λ“œλŠ” 바뀔지라도 처음 μž‘μ•„λ†“μ€ κ΅¬ν˜„ μŠ€νƒ€μΌκ³Ό 가독성 μˆ˜μ€€μ€ 사라지지 μ•ŠλŠ”λ‹€.
  • μ•žμœΌλ‘œ λ°”λ€” μ½”λ“œμ˜ ν’ˆμ§ˆμ— μ§€λŒ€ν•œ 영ν–₯을 λ―ΈμΉœλ‹€.

 

μ†Œν†΅μ„ μ›ν™œν•˜κ²Œ ν•˜λŠ” μ½”λ“œ ν˜•μ‹ 1 : μ„Έλ‘œ ν˜•μ‹ λ§žμΆ”κΈ°

1. μ μ ˆν•œ μ„Έλ‘œ 길이

  • 일반적으둜 큰 νŒŒμΌλ³΄λ‹€λŠ” μž‘μ€ 파일이 μ΄ν•΄ν•˜κΈ° 쉽닀.
  • μ—„κ²©ν•˜κ²Œ 지킬 ν•„μš”λŠ” μ—†μ§€λ§Œ 200쀄 정도가 μ λ‹Ήν•˜λ‹€.

2. 빈 ν–‰μœΌλ‘œ λΆ„λ¦¬ν•˜κΈ°

  • 빈 행은 μƒˆλ‘œμš΄ κ°œλ…μ„ μ‹œμž‘ν•œλ‹€λŠ” μ‹œκ°μ  λ‹¨μ„œμ΄λ‹€.
  • 일련의 ν–‰ λ¬ΆμŒμ€ μ™„κ²°λœ 생각 ν•˜λ‚˜λ₯Ό ν‘œν˜„ν•œλ‹€. 생각 μ‚¬μ΄μ—λŠ” 빈 행을 λ„£μ–΄ λΆ„λ¦¬ν•œλ‹€.
  • νŒ¨ν‚€μ§€ μ„ μ–ΈλΆ€, import λ¬Έ, 각 ν•¨μˆ˜ 사이에 빈 행을 λ„£μ–΄μ„œ 가독성을 λ†’μ΄μž.

3. μ„Έλ‘œ 밀집도 : μ„œλ‘œ λ°€μ ‘ν•œ μ½”λ“œ 행은 μ„Έλ‘œλ‘œ κ°€κΉŒμ΄ 놓기 

  • 같은 파일 μ•ˆμ— μœ„μΉ˜ν•œλ‹€.
  • λ³€μˆ˜λŠ” μ‚¬μš©ν•˜λŠ” μœ„μΉ˜μ— μ΅œλŒ€ν•œ κ°€κΉŒμ΄ μ„ μ–Έν•œλ‹€.
  • μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” 클래슀 맨 μ²˜μŒμ— μ„ μ–Έν•œλ‹€. μ—¬λŸ¬ 클래슀 λ©”μ„œλ“œκ°€ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— ν•œ 곳으둜 λͺ¨μ€λ‹€.
  • ν•œ ν•¨μˆ˜κ°€ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œλ‹€λ©΄ 두 ν•¨μˆ˜λŠ” μ„Έλ‘œλ‘œ κ°€κΉŒμ΄ λ°°μΉ˜ν•œλ‹€. ➑️ κ°œλ…μ  μœ μ‚¬μ„±
    • κ°€λŠ₯ν•˜λ‹€λ©΄ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜λ₯Ό ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ³΄λ‹€ μœ„μ— λ°°μΉ˜ν•œλ‹€. (고차원 ➑️ 저차원)
    • ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜ λ°”λ‘œ μ•„λž˜μ— ν˜ΈμΆœλ˜λŠ” μˆœμ„œλŒ€λ‘œ λ°°μΉ˜ν•˜λ©΄ 가독성이 μ’‹μ•„μ§„λ‹€.
  • 쒅속성이 없더라도 κΈ°λŠ₯이 μœ μ‚¬ν•œ ν•¨μˆ˜λ„ κ°€κΉŒμ΄ λ°°μΉ˜ν•œλ‹€.

 

μ†Œν†΅μ„ μ›ν™œν•˜κ²Œ ν•˜λŠ” μ½”λ“œ ν˜•μ‹ 2 : κ°€λ‘œ ν˜•μ‹ λ§žμΆ”κΈ°

1. ν•œ ν–‰μ˜ 길이λ₯Ό 짧게 μœ μ§€ν•˜κΈ°

  • 100~120자 μ •λ„λ‘œ μ œν•œν•  것을 ꢌμž₯ν•œλ‹€.

2. κ°€λ‘œ 밀집도 : μ μ ˆν•œ 곡백을 두기

  • ν• λ‹Ήλ¬Έ 곡백 : int lineSize = line.length();
  • ν•¨μˆ˜ 인수 곡백 : function f1(a, b, c) { }
  • μ—°μ‚°μž μš°μ„ μˆœμœ„ 곡백 : reutrn b*b - 4*a*c

3. κ°€λ‘œ 밀집도 : μ •λ ¬κ³Ό λ“€μ—¬μ“°κΈ°

  • κ°„λ‹¨ν•œ if 문이라도 λ“€μ—¬μ“°κΈ°λ₯Ό ꢌμž₯ν•œλ‹€.
// Bad ❌
if (a) return true;

// Good βœ…
if (a) {
  return true;
}

 

 

βœ”οΈ μ˜€λŠ˜ 읽은 μ†Œκ°

μ½”λ“œ ν˜•μ‹œμ— μžˆμ–΄μ„œ 'μ μ ˆν•¨'의 기쀀이 항상 μ• λ§€ν•˜κ²Œ λŠκ»΄μ‘Œμ—ˆλŠ”λ°, 이번 챕터λ₯Ό 톡해 ꡬ체적으둜 정리할 수 μžˆμ—ˆλ‹€.

μ½”λ“œμ˜ μ—°κ΄€μ„±, 밀집도λ₯Ό μœ„ν•΄ μ½”λ“œμ˜ 배치, 곡백을 적절히 ν™œμš©ν•΄μ•Ό ν•œλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€.

μΆ”κ°€μ μœΌλ‘œ JavaScript Standard Style도 ν™œμš©ν•΄μ„œ eslint κ·œμΉ™μ„ μ»€μŠ€ν…€ 해봐도 μ’‹κ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€.

 

βœ”οΈ κΆκΈˆν•œ λ‚΄μš© & 잘 μ΄ν•΄λ˜μ§€ μ•ŠλŠ” λ‚΄μš©

p.103

  • C++ κ°€μœ„ κ·œμΉ™(scissors-rule)
    • λͺ¨λ“  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λ₯Ό 클래슀 λ§ˆμ§€λ§‰μ— μ„ μ–Έν•œλ‹€. 

p.105

  • 저차원 ν•¨μˆ˜μ—μ„œ μƒμˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ, μƒμˆ˜λ₯Ό μ•Œμ•„μ•Ό λ§ˆλ•…ν•œ ν•¨μˆ˜μ—μ„œ μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” ν•¨μˆ˜λ‘œ μƒμˆ˜λ‘œ λ„˜κ²¨μ£ΌλŠ” 방법이 더 μ’‹λ‹€.
    • 고차원 ν•¨μˆ˜ : 더 μΆ”μƒν™”λœ 레벨의 ν•¨μˆ˜. 주둜 λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ΄λ‚˜ 높은 μˆ˜μ€€μ˜ κΈ°λŠ₯을 닀룬닀.
    • 저차원 ν•¨μˆ˜ : ꡬ체적이고 μƒμ„Έν•œ κ΅¬ν˜„μ„ λ‹΄λ‹Ήν•˜λŠ” ν•¨μˆ˜. 주둜 세뢀적인 κΈ°λŠ₯을 μ²˜λ¦¬ν•œλ‹€.
    • 고차원 ν•¨μˆ˜μ—μ„œ 저차원 ν•¨μˆ˜λ‘œ μƒμˆ˜λ₯Ό μ „λ‹¬ν•¨μœΌλ‘œμ¨, 고차원 ν•¨μˆ˜κ°€ 세뢀적인 λ‘œμ§μ„ μ‹ κ²½ μ“°μ§€ μ•Šκ³  저차원 ν•¨μˆ˜μ—κ²Œ νŠΉμ •ν•œ μž‘μ—…μ„ μœ„μž„ν•  수 μžˆλ‹€.
// 고차원 ν•¨μˆ˜
function calculateTotalPrice(price, quantity) {
  const taxRate = 0.1; // μ„Έμœ¨ μƒμˆ˜

  // 저차원 ν•¨μˆ˜ 호좜
  const totalPrice = calculatePriceWithTax(price, quantity, taxRate);

  console.log(`Total Price: $${totalPrice}`);
}

// 저차원 ν•¨μˆ˜
function calculatePriceWithTax(price, quantity, taxRate) {
  // μ„ΈκΈˆμ„ κ³ λ €ν•œ 총 가격 계산
  const totalPrice = price * quantity * (1 + taxRate);
  return totalPrice;
}

// 고차원 ν•¨μˆ˜ 호좜
calculateTotalPrice(20, 3);