Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable

Amenable's Blog

ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 1์žฅ, 2์žฅ, 3์žฅ
๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์ /ํด๋ฆฐ ์ฝ”๋“œ

ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 1์žฅ, 2์žฅ, 3์žฅ

2023. 1. 8. 19:24
์‹ ์€ ์„ธ์„ธํ•จ์— ๊นƒ๋“ค์–ด ์žˆ๋‹ค.

 

  ์ฑ…์€ ๊ฐ๊ฐ์˜ ํฐ ์ฃผ์ œ์— ๋Œ€ํ•ด์„œ 17๊ฐœ์˜ ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค. ํ•ด๋‹น ๊ธ€์—์„œ๋Š” ์ฑ…์˜ ๋ชจ๋“  ๋‚ด์šฉ์„ ๋‹ค๋ฃจ์ง€๋Š” ์•Š๋Š”๋‹ค. ํ˜„์žฌ ๋‚˜์—๊ฒŒ ํ•„์š”ํ•œ ๋‚ด์šฉ์ด๊ฑฐ๋‚˜ ๋‹ค์‹œ ํ•œ๋ฒˆ ์ƒ๊ธฐํ•ด์•ผ ํ•˜๋Š” ์ ๋“ค๋งŒ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋ฏ€๋กœ ์ด ์ ์— ๋Œ€ํ•ด์„œ๋Š” ์–‘ํ•ด๋ฅผ ๊ตฌํ•œ๋‹ค.

 

1์žฅ. ๊นจ๋—ํ•œ ์ฝ”๋“œ ๐ŸŒŠ

  ์›Œ๋“œ ์ปค๋‹ํ–„(Ward Cunningham)์€ '๊นจ๋—ํ•œ ์ฝ”๋“œ๋Š” ์ฝ์œผ๋ฉด์„œ ๋†€๋ž„ ์ผ์ด ์—†์–ด์•ผ ํ•œ๋‹ค'๋ผ๊ณ  ๋งํ•œ๋‹ค. ์ฝ์œผ๋ฉด์„œ ์ง์ž‘ํ•œ ๋Œ€๋กœ ๋Œ์•„๊ฐ€๋Š” ์ฝ”๋“œ๊ฐ€ ๊นจ๋—ํ•œ ์ฝ”๋“œ๋‹ค. ๊ฐ ๋ชจ๋“ˆ์€ ๋‹ค์Œ ๋ฌด๋Œ€๋ฅผ ์ค€๋น„ํ•˜๊ณ , ๋ชจ๋“ˆ์„ ์ฝ์œผ๋ฉด์„œ ๋‹ค์Œ์— ๋ฒŒ์–ด์งˆ ์ƒํ™ฉ์ด ๋ณด์—ฌ์•ผ ํ•œ๋‹ค.

 

2์žฅ. ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„ ๐ŸŒผ

  • ์ข‹์€ ์ด๋ฆ„์„ ์ง€์œผ๋ ค๋ฉด ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ์ง€๋งŒ ์ข‹์€ ์ด๋ฆ„์œผ๋กœ ์ ˆ์•ฝํ•˜๋Š” ์‹œ๊ฐ„์ด ํ›จ์”ฌ ๋” ๋งŽ๋‹ค.
  • ์ƒ์„ฑ์ž๋ฅผ ์ค‘๋ณต์ •์˜ํ•  ๋•Œ๋Š” ์ •์  ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ถ”์ƒ์ ์ธ ๊ฐœ๋… ํ•˜๋‚˜์— ๋‹จ์–ด ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด ์ด๋ฅผ ๊ณ ์ˆ˜ํ•œ๋‹ค.
      ์˜ˆ๋ฅผ ๋“ค์–ด, ๋˜‘๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ํด๋ž˜์Šค๋งˆ๋‹ค fetch, retrieve, get์œผ๋กœ ์ œ๊ฐ๊ฐ ๋ถ€๋ฅด์ง€ ์•Š๋Š”๋‹ค.
      ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋™์ผ ์ฝ”๋“œ ๊ธฐ๋ฐ˜์— controller, manager, driver๋ฅผ ์„ž์–ด ์“ฐ๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฝ๋‹ค.
  • ํ•œ ๋‹จ์–ด๋ฅผ ๋‘ ๊ฐ€์ง€ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ๋ผ.
      ์˜ˆ๋ฅผ ๋“ค์–ด, ์ง€๊ธˆ๊นŒ์ง€ ๊ตฌํ˜„ํ•œ add ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋‘๊ฐ€ ๊ธฐ์กด ๊ฐ’ ๋‘ ๊ฐœ๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ์ด์–ด์„œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋งŒ๋“ ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. ์ƒˆ๋กœ ์ž‘์„ฑํ•œ ๋ฉ”์„œ๋“œ๋Š” ์ง‘ํ•ฉ์— ๊ฐ’ ํ•˜๋‚˜๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ add๊ฐ€ ์•„๋‹Œ insert๋‚˜ append๋ผ๋Š” ์ด๋ฆ„์ด ์ ๋‹นํ•˜๋‹ค. 
  • ์˜๋ฏธ ์žˆ๋Š” ๋งฅ๋ฝ์„ ์ถ”๊ฐ€ํ•˜๋ผ
      firstName, lastName, street, houseNumber, city, state, zipcode๋ผ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ, ๋ณ€์ˆ˜๋“ค์€ ์ฃผ์†Œ๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธˆ๋ฐฉ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋А ๋ฉ”์„œ๋“œ๊ฐ€ state๋ผ๋Š” ๋ณ€์ˆ˜ ํ•˜๋‚˜๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋ณ€์ˆ˜ state๊ฐ€ ์ฃผ์†Œ ์ผ๋ถ€๋ผ๋Š” ์‚ฌ์‹ค์„ ๊ธˆ๋ฐฉ ์•Œ์•„์ฑ„๊ธฐ ํž˜๋“ค๋‹ค.
      addr๋ผ๋Š” ์ ‘๋‘์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด addrFirstName, addrLastName, addrSate๋ผ ์“ฐ๋ฉด ๋งฅ๋ฝ์ด ์กฐ๊ธˆ ๋” ๋ถ„๋ช…ํ•ด์ง„๋‹ค.

 

3์žฅ. ํ•จ์ˆ˜ ๐ŸŒฑ

  • ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์€ '์ž‘๊ฒŒ!'๋‹ค. ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋‘ ๋ฒˆ์งธ ๊ทœ์น™์€ '๋” ์ž‘๊ฒŒ!'๋‹ค.
  • ํ•จ์ˆ˜์—์„œ ๋“ค์—ฌ์“ฐ๊ธฐ ์ˆ˜์ค€์€ 1๋‹จ์ด๋‚˜ 2๋‹จ์„ ๋„˜์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
      ์ค‘์ฒฉ ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธธ ๋งŒํผ ํ•จ์ˆ˜๊ฐ€ ์ปค์ ธ์„œ๋Š” ์•ˆ ๋œ๋‹ค. 'if ๋ฌธ / else ๋ฌธ / while ๋ฌธ' ๋“ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋ก์€ ํ•œ ์ค„์ด์–ด์•ผ ํ•œ๋‹ค.
  • ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋ฅผ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋งŒ์„ ํ•ด์•ผ ํ•œ๋‹ค. 
      ์ง€์ •๋œ ํ•จ์ˆ˜ ์ด๋ฆ„ ์•„๋ž˜์—์„œ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•˜๋‚˜์ธ ๋‹จ๊ณ„๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค๋ฉด ๊ทธ ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€ ์ž‘์—…๋งŒ ํ•œ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ™•์‹คํžˆ 'ํ•œ ๊ฐ€์ง€' ์ž‘์—…๋งŒ ํ•˜๋ ค๋ฉด ํ•จ์ˆ˜ ๋‚ด ๋ชจ๋“  ๋ฌธ์žฅ์˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋™์ผํ•ด์•ผ ํ•œ๋‹ค. (์ถ”์ƒํ™” ์ˆ˜์ค€์ด๋ž€ ํ•ด๋‹น ์ฝ”๋“œ๋ฅผ ์ฝ์œผ๋ฉด์„œ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” ์ •๋ณด์˜ ์ˆ˜์ค€์„ ๋งํ•œ๋‹ค. ํ•ด๋‹น ์ฝ”๋“œ๋กœ ๋” ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฉด ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋” ๋‚ฎ์•„์ง„๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.)
  • ํ•œ ํ•จ์ˆ˜ ๋‚ด์— ์ถ”์ƒํ™” ์ˆ˜์ค€์„ ์„ž์œผ๋ฉด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์ด ํ—ท๊ฐˆ๋ฆฐ๋‹ค.
      ํŠน์ • ํ‘œํ˜„์ด ๊ทผ๋ณธ ๊ฐœ๋…์ธ์ง€ ์•„๋‹ˆ๋ฉด ์„ธ๋ถ€์‚ฌํ•ญ์ธ์ง€ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์–ด๋ ค์šด ํƒ“์ด๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š” ์ด ์ •๋„๋กœ ๊ทธ์น˜์ง€ ์•Š๋Š”๋‹ค. ๊ทผ๋ณธ ๊ฐœ๋…๊ณผ ์„ธ๋ถ€์‚ฌํ•ญ์„ ๋’ค์„ž๊ธฐ ์‹œ์ž‘ํ•˜๋ฉด, ๊นจ์–ด์ง„ ์ฐฝ๋ฌธ์ฒ˜๋Ÿผ ์‚ฌ๋žŒ๋“ค์ด ํ•จ์ˆ˜์— ์„ธ๋ถ€์‚ฌํ•ญ์„ ์ ์  ๋” ์ถ”๊ฐ€ํ•œ๋‹ค.
      ์ด๋ฅผ ์œ„ํ•ด ๋‚ด๋ ค๊ฐ€๊ธฐ ๊ทœ์น™์ด๋ž€ ๊ฒƒ์ด ์žˆ๋‹ค. ํ•œ ํ•จ์ˆ˜ ๋‹ค์Œ์—๋Š” ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•œ ๋‹จ๊ณ„ ๋‚ฎ์€ ํ•จ์ˆ˜๊ฐ€ ์˜ค๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ฆ‰, ์œ„์—์„œ ์•„๋ž˜๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ฝ์œผ๋ฉด ํ•จ์ˆ˜ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•œ ๋ฒˆ์— ํ•œ ๋‹จ๊ณ„์”ฉ ๋‚ฎ์•„์ง„๋‹ค. 
  • ๋‹คํ˜•์„ฑ(polymorphism)์„ ์ด์šฉํ•˜์—ฌ switch ๋ฌธ์„ ์ž‘์„ฑํ•˜์ž
// ๋‚˜์œ ์ฝ”๋“œ
public Money calculatePay(Employee e) throws InvalidEmployeeType {
    switch (e.type) {
        case COMMISSIONED:
            return calculateCommissionedPay(e);
        case HOURLY:
            return calculateHourlyPae(e);
        case SALARIED:
            return calculateSalariedPay(e);
        default:
            throw new InvalidEmployeeType(e.type);
    }
}
// ์ข‹์€ ์ฝ”๋“œ
public abstract class Employee {
    public abstract boolean isPayday();
    public abstract Money calculatePay();
    public abstract void deliverPay(Money pay);
}

------------------------------------------------

public interface EmplyeeFactory {
    public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType;
}

------------------------------------------------

public class EmployeeFactoryImpl implements EmployeeFactory {
    public Employee makeEmployee(EmployeeRecord r) throws InvalidEmployeeType {
        switch (r.type) {
            case COMMISSIONED:
                return new CommissionedEmployee(r);
            case HOURLY:
                return new HourlyEmployee(r);
            case SALARIED:
                return new SalariedEmployee(r);
            default:
                throw new InvalidEmployeeType(r.type);
        }
    }
}

 

  • ํ•จ์ˆ˜์—์„œ ์ด์ƒ์ ์ธ ์ธ์ˆ˜ ๊ฐœ์ˆ˜๋Š” 0๊ฐœ(๋ฌดํ•ญ)๋‹ค.
      ๋‹ค์Œ์€ 1๊ฐœ(๋‹จํ•ญ)๊ณ , ๋‹ค์Œ์€ 2๊ฐœ(์ดํ•ญ)๋‹ค. 3๊ฐœ(์‚ผํ•ญ)๋Š” ๊ฐ€๋Šฅํ•œ ํ”ผํ•˜๋Š” ํŽธ์ด ์ข‹๋‹ค. 4๊ฐœ ์ด์ƒ(๋‹คํ•ญ)์€ ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํŠน๋ณ„ํ•œ ์ด์œ ๊ฐ€ ์žˆ์–ด๋„ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋œ๋‹ค. 
  • ๋‹จํ•ญ ํ•จ์ˆ˜๋Š” '์ธ์ˆ˜์— ์งˆ๋ฌธ์„ ๋˜์ง€๋Š” ๊ฒฝ์šฐ'์™€ '์ธ์ˆ˜๋ฅผ ๋ฌด์–ธ๊ฐ€๋กœ ๋ณ€ํ™˜ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.
      ์ธ์ˆ˜์— ์งˆ๋ฌธ์„ ๋˜์ง€๋Š” ๊ฒฝ์šฐ - boolean fileExists("MyFile")
      ์ธ์ˆ˜๋ฅผ ๋ฌด์–ธ๊ฐ€๋กœ ๋ณ€ํ™˜ํ•ด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ - InputStream fileOpen("MyFiile") // String ํ˜•์˜ ํŒŒ์ผ ์ด๋ฆ„์„ InpustStream์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ
  • ํ”Œ๋ž˜๊ทธ ์ธ์ˆ˜๋ฅผ ์“ฐ์ง€ ๋ง์ž
      ํ•จ์ˆ˜๋กœ ๋ถ€์šธ ๊ฐ’์„ ๋„˜๊ธฐ๋Š” ๊ด€๋ก€๋Š” ์ •๋ง๋กœ ๋”์ฐํ•˜๋‹ค. ์ด๊ฒƒ์€ ํ•จ์ˆ˜๊ฐ€ ํ•œ๊บผ๋ฒˆ์— ์—ฌ๋Ÿฌ ๊ฐ€์ง€๋ฅผ ์ฒ˜๋ฆฌํ•œ๋‹ค๊ณ  ๋Œ€๋†“๊ณ  ๊ณตํ‘œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. (ํ”Œ๋ž˜๊ทธ๊ฐ€ ์ฐธ์ด๋ฉด A๋ฅผ ํ•˜๊ณ  ๊ฑฐ์ง“์ด๋ฉด B๋ฅผ ํ•œ๋‹ค๋Š” ๊ฒƒ)
  • ํ•จ์ˆ˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ฑฐ๋‚˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋‹ตํ•˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜๋งŒ ํ•ด์•ผ ํ•œ๋‹ค.
  • ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ณด๋‹ค ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ผ
// ์˜ค๋ฅ˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
if (deletePage(page) == E_OK) {
    if (registry.deleteReference(page.name) == E_OK) {
        if (configKeys.deleteKey(page.name.makeKey()) == E_OK) {
            logger.log("page delted");
        } else {
            logger.log("configKey not deleted");
        }
    } else {
        logger.log("deletedReference from registry failed");
    }
} else {
    logger.log("delete failed");
    return E_ERROR;
}

 

// ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ
try {
    deletePage(page);
    registry.deleteReference(page.name);
    configKeys.deleteKey(page.name.makeKey());
}
catch (Exception e) {
    logger.log(e.getMessage());
}

  try/catch ๋ธ”๋ก์€ ์›๋ž˜ ์ง€์ €๋ถ„ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ try/catch ๋ธ”๋ก์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ„๋„ ํ•จ์ˆ˜๋กœ ๋ฝ‘์•„๋‚ด๋Š” ํŽธ์ด ์ข‹๋‹ค.

public void delete(Page page) {
    try {
        deletePageAndAllReferences(page);
    }
    catch (Exception e) {
        logError(e);
    }
}

private void deletePageAndAllReferences(Page page) throws Exception {
    deletePage(page);
    registry.deleteReference(page.name);
    configKeys.deleteKey(page.name.makeKey());
}

private void logError(Exceptioni e) {
    logger.log(e.getMessage());
}

'๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  > ํด๋ฆฐ ์ฝ”๋“œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 11์žฅ, 12์žฅ  (0) 2023.01.11
ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 10์žฅ  (0) 2023.01.11
ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 8์žฅ, 9์žฅ  (0) 2023.01.10
ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 7์žฅ  (0) 2023.01.10
ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 4์žฅ, 5์žฅ, 6์žฅ  (0) 2023.01.09
    '๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์ /ํด๋ฆฐ ์ฝ”๋“œ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 10์žฅ
    • ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 8์žฅ, 9์žฅ
    • ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 7์žฅ
    • ํด๋ฆฐ ์ฝ”๋“œ(Clean Code) - 4์žฅ, 5์žฅ, 6์žฅ
    Amenable
    Amenable
    CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”