DAMP 원칙은 DRY 원칙과는 반대로, 코드를 구체적으로 만들어 유지보수하기 쉽게 만드는 것이다.
(DRY 원칙 참고 - https://cotist.tistory.com/33)
DAMP 원칙은 코드를 더 직접적이고 구체적으로 작성하여, 코드의 의도를 더 잘 나타내도록 하는 것을 권장한다. 예를 들어, 코드의 함수나 변수 이름을 더 구체적으로 작성하고, 불필요한 추상화를 피하는 등의 방식으로 DAMP 원칙을 따르는 것이다.
DAMP 원칙은 DRY 원칙과는 다르게, 중복 코드를 가능한 한 피하지 않고, 코드를 보다 직접적이고 구체적으로 작성하는 것을 강조한다. 이를 통해 코드를 더 쉽게 이해하여 유지보수를 할 수 있다.
그러나 DAMP 원칙도 과도하게 적용할 경우, 코드의 가독성을 저해하고 코드의 복잡도를 높일 수 있다. 따라서 DAMP 원칙을 따를 때는, 코드의 가독성과 유지보수성을 유지하면서, 불필요한 추상화를 피하는 등의 균형을 유지해야 한다.
예를 들어, 다음과 같은 코드가 있다고 가정해보자.
function calculate(shape) {
if (shape.type === 'square') {
const area = shape.side * shape.side;
console.log(`The area of the square is ${area}`);
} else if (shape.type === 'rectangle') {
const area = shape.width * shape.height;
console.log(`The area of the rectangle is ${area}`);
} else if (shape.type === 'triangle') {
const area = (shape.base * shape.height) / 2;
console.log(`The area of the triangle is ${area}`);
}
}
위의 코드에서는 객체를 인수로 받아 해당 객체의 `type` 프로퍼티를 기반으로 면적을 계산한다. 그러나 위의 코드는 DAMP 원칙에 따라 구체적이지 않으며, 추상화가 너무 많다.
DAMP 원칙을 따르는 코드는 코드의 구체적인 의미를 잘 전달할 수 있어야 한다. 이를 위해서는, 코드를 가능한 한 구체적이고 직관적으로 작성해야 한다. 예를 들어, 다음과 같이 작성할 수 있겠다.
function calculateSquareArea(side) {
const area = side * side;
console.log(`The area of the square is ${area}`);
}
function calculateRectangleArea(width, height) {
const area = width * height;
console.log(`The area of the rectangle is ${area}`);
}
function calculateTriangleArea(base, height) {
const area = (base * height) / 2;
console.log(`The area of the triangle is ${area}`);
}
위의 코드에서는 각각의 함수가 개별 도형을 계산하도록 구체적으로 작성되어 있다. 이를 호출할 때, 다음과 같이 인수를 전달한다.
calculateSquareArea(5); // The area of the square is 25
calculateRectangleArea(5, 10); // The area of the rectangle is 50
calculateTriangleArea(4, 8); // The area of the triangle is 16
위의 코드에서는 DAMP 원칙에 따라 코드를 구체적으로 작성하여, 코드의 의도를 더 잘 나타내도록 했다. 이를 통해 코드의 가독성과 유지보수성을 높일 수 있다.
'Experience > Developer' 카테고리의 다른 글
DRY 원칙을 고수하여 코드 작성 효율성 높이기 (0) | 2023.04.27 |
---|---|
React Native로 세팅부터 배포까지 후기, 장단점 등 회고록 (2) - 네이티브단 환경 설정 (0) | 2022.07.18 |
React Native로 세팅부터 배포까지 후기, 장단점 등 회고록 (1) - RN 세팅 (0) | 2022.07.18 |