728x90
반응형
SMALL
1. 의존성 역전 원칙(DIP: Dependency Inversion Principle)
의미
의존성 역전 원칙은 "상위 수준의 모듈(중요한 역할을 하는 부분)이 하위 수준의 모듈(세부적인 부분)에 의존하지 않도록 설계하는 것"입니다. 대신 둘 다 인터페이스(공통 규칙)에 의존하도록 설계합니다.
쉽게 말하면
- 큰 그림을 그리는 관리자(상위 수준 모듈)는 세부적인 일을 하는 사람(하위 수준 모듈)에 직접 의존하지 않습니다.
- 대신, "일하는 규칙(인터페이스)"을 정하고, 관리자와 일꾼 모두 이 규칙을 따르게 합니다.
- 즉, 큰 그림과 세부 사항이 서로 독립적으로 움직일 수 있도록 설계합니다.
왜 중요한가?
- 세부적인 내용이 바뀌어도 큰 그림(상위 수준 모듈)에 영향을 주지 않기 때문에 코드의 유지보수성이 좋아집니다.
예제 코드 (Java)
// 인터페이스 (공통 규칙)
interface Worker {
void doWork();
}
// 세부적인 일꾼 (하위 수준 모듈)
class Developer implements Worker {
public void doWork() {
System.out.println("Writing code...");
}
}
// 관리자 (상위 수준 모듈)
class Manager {
private Worker worker;
// 인터페이스에 의존 (Developer가 아니라 Worker를 사용)
public Manager(Worker worker) {
this.worker = worker;
}
public void manage() {
worker.doWork();
}
}
// 사용
public class Main {
public static void main(String[] args) {
Worker developer = new Developer();
Manager manager = new Manager(developer);
manager.manage(); // "Writing code..." 출력
}
}
쉽게 풀어서 설명
- 잘못된 경우: 관리자(Manager)가 특정 일꾼(Developer)에 직접 의존하면, 일꾼이 바뀌면 관리자도 수정해야 합니다.
- DIP 적용: 일꾼이 누구든(Developer든 다른 Worker든) 관리자는 규칙(인터페이스)을 통해 관리하므로 수정할 필요가 없습니다.
2. DRY 원칙 (Don’t Repeat Yourself)
의미
DRY는 "똑같은 코드를 반복하지 말자"는 원칙입니다.
- 한 번 작성한 코드를 여러 곳에서 재사용할 수 있도록 설계합니다.
- 코드 중복을 없애면 유지보수가 쉬워지고, 실수를 줄일 수 있습니다.
쉽게 말하면
- 같은 기능을 여러 번 작성하지 말고, 한 곳에 모아서 필요할 때마다 호출해서 사용하자는 뜻입니다.
- "복사 붙여넣기 대신, 재사용 가능한 도구를 만들자"입니다.
왜 중요한가?
- 코드 중복이 많으면 한 곳에서 문제가 생길 때 모든 복사본을 고쳐야 해서 작업이 번거로워집니다.
- 중복을 제거하면 코드가 간결해지고 수정하기 쉬워집니다.
예제 코드 (Python)
중복이 있는 코드 (나쁜 예):
def calculate_area_circle(radius):
return 3.14 * radius * radius
def calculate_area_square(side):
return side * side
DRY 원칙을 적용한 코드 (좋은 예):
def calculate_area(shape, dimension):
if shape == "circle":
return 3.14 * dimension * dimension
elif shape == "square":
return dimension * dimension
# 재사용
print(calculate_area("circle", 5)) # 원의 넓이
print(calculate_area("square", 4)) # 정사각형의 넓이
쉽게 풀어서 설명
- 잘못된 경우: 원과 정사각형의 넓이를 각각 계산하는 함수를 따로 만든다면 중복 코드가 생깁니다.
- DRY 적용: 공통된 계산 규칙을 하나의 함수로 만들어 재사용하면 중복을 없앨 수 있습니다.
3. KISS 원칙 (Keep It Simple, Stupid)
의미
KISS는 "단순하게 유지하라"는 뜻입니다.
- 코드는 최대한 이해하기 쉽게 작성해야 한다는 원칙입니다.
- 복잡하고 화려한 코드는 오류를 만들기 쉽고, 다른 사람이 유지보수하기 어렵습니다.
쉽게 말하면
- 코드를 작성할 때 "복잡하게 만들 필요가 없다"는 뜻입니다.
- "읽기 쉽고, 직관적으로 작성하자"는 메시지입니다.
왜 중요한가?
- 복잡한 코드는 나중에 수정하거나 다른 사람이 이해하기 어렵습니다.
- 단순한 코드는 읽고 유지보수하기 쉬워집니다.
예제 코드 (JavaScript)
복잡한 코드 (나쁜 예):
function calculate(x, y, operator) {
if (operator === "+") {
return x + y;
} else if (operator === "-") {
return x - y;
} else if (operator === "*") {
return x * y;
} else if (operator === "/") {
return x / y;
} else {
return null;
}
}
단순한 코드 (좋은 예):
function calculate(x, y, operator) {
const operations = {
"+": (a, b) => a + b,
"-": (a, b) => a - b,
"*": (a, b) => a * b,
"/": (a, b) => a / b,
};
return operations[operator] ? operations[operator](x, y) : null;
}
쉽게 풀어서 설명
- 잘못된 경우: 길고 복잡한 조건문이 있으면 수정하거나 이해하기 어려워집니다.
- KISS 적용: 단순한 데이터 구조와 함수를 사용해 코드를 간결하고 직관적으로 만듭니다.
요약
- 의존성 역전 원칙(DIP): 큰 그림을 그리는 관리자(상위 수준 모듈)는 세부적인 일을 하는 일꾼(하위 수준 모듈)에 직접 의존하지 말고, 공통 규칙(인터페이스)을 통해 의사소통하자.
- DRY 원칙: 같은 코드를 반복하지 말고, 한 번만 작성해서 재사용하자.
- KISS 원칙: 코드는 최대한 단순하고 읽기 쉽게 작성하자.
반응형
SMALL
'소프트웨어 개발 및 설계' 카테고리의 다른 글
테스트 자동화 : 예시 코드 (0) | 2024.12.13 |
---|---|
단위 테스트(Unit Test)와 통합 테스트(Integration Test) : 예시코드 (1) | 2024.12.13 |
소프트웨어 개발 방법론 (0) | 2024.12.05 |