소프트웨어 개발의 3대 원칙은 코드의 간결함과 효율성을 유지하고, 유지보수성과 확장성을 높이기 위한 원칙입니다.
❌ 복잡한 코드
if (age >= 18 && age <= 100) {
System.out.println("성인입니다.");
} else if (age < 18 && age > 0) {
System.out.println("미성년자입니다.");
} else if (age < 0 || age > 100) {
System.out.println("유효하지 않은 나이입니다.");
}
✅ 단순화된 코드
if (age < 0 || age > 100) {
System.out.println("유효하지 않은 나이입니다.");
} else if (age < 18) {
System.out.println("미성년자입니다.");
} else {
System.out.println("성인입니다.");
}
❌ 불필요한 기능 추가
public class User {
private String name;
private String address; // 나중에 필요할지도 몰라서 추가
private String phoneNumber; // 나중에 필요할지도 몰라서 추가
private String nickname; // 추가
}
✅ YAGNI 적용
public class User {
private String name; // 현재 필요한 필드만 구현
}
❌ 중복된 코드
public boolean validateEmail(String email) {
if (email == null || !email.contains("@")) {
System.out.println("이메일 형식이 올바르지 않습니다.");
return false;
}
return true;
}
public boolean validatePassword(String password) {
if (password == null || password.length() < 8) {
System.out.println("비밀번호는 최소 8자 이상이어야 합니다.");
return false;
}
return true;
}
public void register(String email, String password) {
if (email == null || !email.contains("@")) {
System.out.println("이메일 형식이 올바르지 않습니다.");
return;
}
if (password == null || password.length() < 8) {
System.out.println("비밀번호는 최소 8자 이상이어야 합니다.");
return;
}
System.out.println("회원가입 성공!");
}
✅ DRY 적용
public boolean validate(String value, Predicate<String> condition, String errorMessage) {
if (value == null || condition.test(value)) {
System.out.println(errorMessage);
return false;
}
return true;
}
public void register(String email, String password) {
if (!validate(email, v -> !v.contains("@"), "이메일 형식이 올바르지 않습니다.") ||
!validate(password, v -> v.length() < 8, "비밀번호는 최소 8자 이상이어야 합니다.")) {
return;
}
System.out.println("회원가입 성공!");
}
원칙 | 의미 | 목표 |
---|---|---|
KISS | 단순하게 유지하라 | 코드 복잡도 줄이기, 가독성 높이기 |
YAGNI | 지금 당장 필요하지 않으면 구현하지 말라 | 개발 시간 절약, 불필요한 기능 방지 |
DRY | 중복을 피하고 재사용 가능하게 만들어라 | 코드 재사용성 증가, 유지보수 용이 |
S (단일 책임 원칙):
O (개방-폐쇄 원칙):
D (의존관계 역전 원칙):
S (단일 책임 원칙):
O (개방-폐쇄 원칙):
I (인터페이스 분리 원칙):
S (단일 책임 원칙):
O (개방-폐쇄 원칙):
L (리스코프 치환 원칙):
D (의존관계 역전 원칙):
원칙 | 목표 | SOLID 원칙과 연관 |
---|---|---|
KISS | 단순하고 명확한 코드 유지 | 단일 책임 원칙(S), 개방-폐쇄 원칙(O) |
YAGNI | 필요하지 않은 기능 미리 구현하지 않기 | 단일 책임 원칙(S), 인터페이스 분리 원칙(I) |
DRY | 중복 코드 제거 및 재사용성 증가 | 단일 책임 원칙(S), 리스코프 치환 원칙(L), 개방-폐쇄 원칙(O) |
이 3대 원칙은 복잡한 소프트웨어 개발 과정에서 불필요한 작업을 줄이고 코드 품질을 높이는 데 매우 중요한 역할을 합니다.
지속적으로 이 원칙들을 적용한다면 더 단순하고 효율적인 소프트웨어를 만들 수 있습니다.
추가 학습 자료