매직 넘버
Mar 04 2023
Magic Numbers는 깨끗한 코드를 작성하는 방법 중 하나입니다. 환영합니다 친구 여러분, 이제 코드를 더 쉽게 읽고 변경하고 코드에서 좋은 냄새가 나도록 만드는 중요한 원칙에 대해 이야기하겠습니다.
매직 넘버는 깨끗한 코드를 작성하는 방법 중 하나입니다.
어서오세요 친구님, 이제 코드를 읽기 쉽고 변경하기 쉽게 만드는 중요한 원칙에 대해 이야기하고 코드에 좋은 냄새가 나도록 할 것입니다.
먼저 코드 냄새가 무엇인지 설명하겠습니다. 코드 냄새는 리팩토링 중에 해결할 수 있는 문제의 지표이며 쉽게 발견하고 잡아서 해결할 수 있습니다.
8시간이 걸리고 OMG가 결국 끝났다고 말하는 코딩 작업을 마친 후 시간이 오래 걸린다고 가정해 보겠습니다.
double deductFromStanderdEmployee(JouniorEmployee standerdEmployee){
standerdEmplyee.gross= standerdEmplyee.gross - (3.3 + 2.3) / 100 * standerdEmplyee.gross;
}
이제 팀장은 의료 서비스를 3.5%로 변경해야 하며 친구에게 그렇게 하도록 명령합니다.
당신의 친구는 이제 코드와 그의 인상을 보고 어떤 숫자가 의료 서비스 세금 3.3 또는 2.3입니까?️
이제 문제는 마법의 숫자가 의미하는 설명할 수 없는 의미를 가진 고유한 값을 사용하는 것이 매우 분명합니다. 명명된 상수를 사용하여 매직 넘버를 식별하는 것이 좋습니다. 코드를 리팩토링하도록 하겠습니다.
const double GOVERNMENTAL_TAXES_PERSENTAGE=3.3;
const double MEDICAL_SERVICES_TAXES_PERSENTAGE=2.3;
double deductFromStanderdEmployee(JouniorEmployee standerdEmployee){
standerdEmplyee.gross= standerdEmplyee.gross - (GOVERNMENTAL_TAXES_PERSENTAGE + MEDICAL_SERVICES_TAXES_PERSENTAGE) / 100 * standerdEmplyee.gross;
}
이제 당신은 100이 마법의 숫자가 아닌지 묻습니다.
나는 그것이 마법의 숫자가 아니라고 말할 것입니다. 우리는 백분율을 계산하여 매우 깨끗하고 좌초되었음을 알 수 있습니다. 예를 들어 for 루프와 같습니다.
for (int i=0;i<n;i++){
//some code here;
}
요컨대 매직 넘버가 약간의 충돌을 일으키므로 이러한 실수에 빠지지 않도록 리팩토링에서 잘 알아차려야 합니다.
읽어 주셔서 감사합니다. 다음 기사에서 만나기를 바랍니다.

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































