코드 냄새 127 - 가변 상수
TL;DR: Use inmutable constants
문제
솔루션
문맥
우리는 컴퓨터 프로그래밍에 대한 첫 번째 과정에서 상수를 선언하는 방법을 배웠습니다.
항상 그렇듯이 무언가가 일정하다면 중요하지 않습니다.
변이하지 않는 것이 중요합니다.
샘플 코드
잘못된
const DISCOUNT_PLATINUM = 0.1;
const DISCOUNT_GOLD = 0.05;
const DISCOUNT_SILVER = 0.02;
//Since variables are constants we cannot reassign them
const DISCOUNT_PLATINUM = 0.05; //Error
//We can group them
const ALL_CONSTANTS = {
DISCOUNT: {
PLATINUM = 0.1;
GOLD = 0.04;
SILVER = 0.02;
},
};
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.08; //NOT AN ERROR. WTF!
const ALL_CONSTANTS = Object.freeze({
DISCOUNT:
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //NOT AN ERROR. WTF!
오른쪽
export const ALL_CONSTANTS = Object.freeze({
DISCOUNT: Object.freeze({
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
}),
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //ERROR
//Code works, but it is coupled and we cannot test it
Class TaxesProvider {
applyPlatinum(product);
}
//Now we can couple to a interface (the protocol of taxes provider)
//Since class has no setters it is constant an immuatable
//And we can replace it on tests
발각
[X] 반자동
변경된 값을 찾기 위해 돌연변이 테스트를 수행할 수 있습니다.
태그
잘못된
const DISCOUNT_PLATINUM = 0.1;
const DISCOUNT_GOLD = 0.05;
const DISCOUNT_SILVER = 0.02;
//Since variables are constants we cannot reassign them
const DISCOUNT_PLATINUM = 0.05; //Error
//We can group them
const ALL_CONSTANTS = {
DISCOUNT: {
PLATINUM = 0.1;
GOLD = 0.04;
SILVER = 0.02;
},
};
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.08; //NOT AN ERROR. WTF!
const ALL_CONSTANTS = Object.freeze({
DISCOUNT:
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //NOT AN ERROR. WTF!
오른쪽
export const ALL_CONSTANTS = Object.freeze({
DISCOUNT: Object.freeze({
PLATINUM = 0.1;
GOLD = 0.05;
SILVER = 0.02;
}),
});
const ALL_CONSTANTS = 3.14; //Error
ALL_CONSTANTS.DISCOUNT.PLATINUM = 0.12; //ERROR
//Code works, but it is coupled and we cannot test it
Class TaxesProvider {
applyPlatinum(product);
}
//Now we can couple to a interface (the protocol of taxes provider)
//Since class has no setters it is constant an immuatable
//And we can replace it on tests
발각
[X] 반자동
변경된 값을 찾기 위해 돌연변이 테스트를 수행할 수 있습니다.
태그
결론
가변성은 매우 중요합니다.
올바른 도구를 사용하여 이를 시행해야 합니다.
처지
Code Smell 86 - 변경 가능한 Const 배열
Maxi Contieri ・ 2021년 8월 25일 ・ 1분 읽기
#javascript
#oop
#programming
#codenewbie
코드 냄새 107 - 변수 재사용
Maxi Contieri ・ 2021년 12월 1일 ・ 2분 읽기
#oop
#programming
#webdev
#tutorial
코드 냄새 02 - 상수 및 매직 넘버
Maxi Contieri ・ 2020년 10월 21일 ・ 1분 읽기
#beginners
#codenewbie
#100daysofcode
#codequality
더 많은 정보
Code Smell 86 - 변경 가능한 Const 배열
Maxi Contieri ・ 2021년 8월 25일 ・ 1분 읽기
코드 냄새 107 - 변수 재사용
Maxi Contieri ・ 2021년 12월 1일 ・ 2분 읽기
코드 냄새 02 - 상수 및 매직 넘버
Maxi Contieri ・ 2020년 10월 21일 ・ 1분 읽기
더 많은 정보
학점
이 냄새는 영감을 받았습니다.
사진 제공: Sangharsh Lohakare on Unsplash
You start digging in the code. The more you dig, the more stuff you turn up. Eventually you dig yourself into a hole you can’t get out of. To avoid digging your own grave, refactoring must be done systematically.
에릭 감마
소프트웨어 엔지니어링 좋은 인용구
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
#codenewbie
#programming
#quotes
#software
이 기사는 CodeSmell 시리즈의 일부입니다.
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
#codenewbie
#tutorial
#codequality
#beginners
Reference
이 문제에 관하여(코드 냄새 127 - 가변 상수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/mcsee/code-smell-127-mutable-constants-26dj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
You start digging in the code. The more you dig, the more stuff you turn up. Eventually you dig yourself into a hole you can’t get out of. To avoid digging your own grave, refactoring must be done systematically.
소프트웨어 엔지니어링 좋은 인용구
Maxi Contieri ・ 12월 28일 '20 ・ 13분 읽기
코드에서 냄새 나는 부분을 찾는 방법
Maxi Contieri ・ 2021년 5월 21일 ・ 4분 읽기
Reference
이 문제에 관하여(코드 냄새 127 - 가변 상수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mcsee/code-smell-127-mutable-constants-26dj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)