CRUD를 구현하면서 예외처리를 하는데 이때 중복되는 예외처리가 발생된다.
이를 객체 지향 프로그래밍의 상속성을 향상 시키고 Clean Code 작성을 위해 미들웨어로 처리해주었다.
기존 예시 코드
Test1 = async (t1, t2, t3, t4) => {
try {
if (!t1) {
return {
status: 400,
message: 't1 미입력',
};
}
if (!t2) {
return {
status: 400,
message: 't2 미입력',
};
}
if (!t3) {
return {
status: 400,
message: 't3 미입력',
};
}
if (!t4) {
return {
status: 400,
message: 't4 미입력',
};
}
const result = await this.testRepository.Test1(t1, t2, t3, t4);
}
return {
status: 200,
message: result,
};
} catch (err) {
return { status: 500, message: 'Server Error' };
}
};
Test2 = async (t1, t2, t3, t4) => {
try {
if (!t1) {
return {
status: 400,
message: 't1 미입력',
};
}
if (!t2) {
return {
status: 400,
message: 't2 미입력',
};
}
if (!t3) {
return {
status: 400,
message: 't3 미입력',
};
}
if (!t4) {
return {
status: 400,
message: 't4 미입력',
};
}
const result = await this.testRepository.Test2(t1, t2, t3, t4);
}
return {
status: 200,
message: result,
};
} catch (err) {
return { status: 500, message: 'Server Error' };
}
};
Test1 이라는 함수와 Test2라는 함수가 존재하고
두 함수 모두 t1 , t2 , t3 , t4를 인자로 받는다.
이때 각 인자를 받지 못했을 때 예외처리를 하는게
현재는 함수가 2개 뿐이라 길지 않지만 많은 함수가 같은 인자를 받고 이를 각자의 함수에서 예외처리 할 경우
코드가 엄청 길어지고 중복된 코드라 가독성이 떨어진다.
Clean code 작성과 객체 지향 프로그래밍을 위해선 코드의 재사용성 향상 시켜야 하기 때문에
하나의 미들웨어로 처리해야한다.
개선 예시 코드
Test1 = async (t1, t2, t3, t4) => {
try {
await this.Test3(t1, t2, t3, t4);
const result = await this.testRepository.Test1(t1, t2, t3, t4);
return {
status: 200,
message: result,
};
} catch (err) {
return { status: 500, message: 'Server Error' };
}
};
Test2 = async (t1, t2, t3, t4) => {
try {
await this.Test3(t1, t2, t3, t4);
const result = await this.testRepository.Test2(t1, t2, t3, t4);
return {
status: 200,
message: result,
};
} catch (err) {
return { status: 500, message: 'Server Error' };
}
};
Test3 = async (t1, t2, t3, t4) => {
try {
if (!t1) {
return {
status: 400,
message: 't1 미입력',
};
}
if (!t2) {
return {
status: 400,
message: 't2 미입력',
};
}
if (!t3) {
return {
status: 400,
message: 't3 미입력',
};
}
if (!t4) {
return {
status: 400,
message: 't4 미입력',
};
}
} catch (err) {
console.log(err)
return { status: 500, message: 'Server Error' };
}
}
Test3이라는 함수를 만들어 중복된 예처리를 하도록 만들었고
Test1 , Test2 함수에서는 Test3함수를 미들웨어로 사용하여 예외처리하도록 만들어줬다.
이는 CRUD 뿐만 아니라 코드를 작성하다보면 중복되는 로직이 발생할 때 꼭 이런 식으로 만들어주는게 좋다.
'긁적..' 카테고리의 다른 글
쿠키와 세션 (0) | 2024.02.16 |
---|---|
rest api (0) | 2024.02.15 |
MVC 패턴 (0) | 2023.08.17 |
8딱8딱 KPT회고 (0) | 2023.08.14 |
SpartaTeam_8딱8딱 SA (0) | 2023.08.07 |