반대
if가 가져온 문제는 주로 모듈(방법, 대상, 구성 요소 등) 간의 의존을 구축하고 코드 경로의 지점을 증가시켰다(이것은 코드의 가독성을 떨어뜨린다).
Francesco는 다음과 같은 코드를 예로 들었습니다.
// Bond class
double calculateValue() {
if(_type == BTP) {
return calculateBTPValue();
} else if(_type == BOT) {
return calculateBOTValue();
} else {
return calculateEUBValue();
}
}
그래픽 if 또는 switch 문을 제거하려면 다음과 같이 멀티태스킹을 사용해야 합니다.
// Bond class
double calculateValue() {
_bondProfile.calculate();
}
// AbstractBondProfile class
abstract double calculate();
// classe BTPBondProfile >> AbstractBondProfile
double calculate() {
...
}
// classe BOTBondProfile >> AbstractBondProfile
double calculate() {
...
}
// classe EUBondProfile >> AbstractBondProfile
double calculate() {
...
}
Francesco는 이렇게 하는 것이 좋은 점이
새로운 bond 형식을 추가해야 할 때, 이 부분의 독립 논리를 저장하기 위해 새로운 형식을 만들면 됩니다.
추상적인 클래스나 인터페이스를 만드는 것은 개선의 유일한 방법이 아니다. 우리의 목적은 프로그램을 더욱 유연하고 교류하기 쉬우며 테스트하기 쉬우며 수시로 변화를 포옹하는 것이다.
Matteo Vaccari는 "if 작업 반대"에 대해 다음과 같은 몇 가지 방법을 추가했습니다.
수정 전
수정 후
볼 연산 결과를 직접 사용
if (foo) {
if (bar) {
return true;
}
}
if (baz) {
return true;
} else {
return false;
}
return (foo && bar || baz);
보조 함수 사용
if (x > y)
return x;
return y;
return max(x, y);
유연성 0의 역할
int arraySum(int[] array) {
if (array.length == 0) {
return 0;
}
int sum = array[0];
for (int i=1; i < array.length; i++) {
sum += array[i];
}
return sum;
}
int arraySum(int[] array) {
int sum = 0;
for (int i=0; i < array.length; i++) {
sum += array[i];
}
return sum;
}
그러나 지역사회에서도 이에 대해 다른 견해가 나오고 있다.
오, 여기 문제가 하나 발견됐어요.존경하는 고객님, 전 컨설턴트가 "if"문구를 사용했습니다. 이 함수를 80개의 새로운 종류로 바꾸면 더욱 민첩해 보입니다.
Don't Repeat Yourself가 더 날렵해 보입니다.더 좋은 방법은 세 번째 중복 코드가 나올 때까지 기다렸다가 재구성하는 것이다. (하지만 너무 오래 기다리지 마라.)이렇게 하면 상관없는 코드를 많이 피할 수 있고 프로그래머에게 더욱 유연한 선택 여지를 줄 수 있다.
'if행동 반대'를 위한 보충도 있다.
이 행동은'모든if 코드 삭제'가 아니라 유형 판단 논리를 다중으로 교체하는 것이라고 생각합니다.그것을 '반대 유형 필드 행동' 이라고 부르는 것이 더 적합할 것이다.
'if행동 반대'도'if-free'의 코드 예시를 모집하고 있습니다. 거기서 코드 단편을 제출할 수 있습니다.사실 국내 지역사회에서도 번거로운if문장을 없애는 사례가 적지 않다. 예를 들어 다음과 같다.
4
4
4
당신도 이 방면에 독특한 경험을 가지고 있습니까?함께 나눠보는 것도 좋을 것 같아요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.