on
4 TypeScript로 너무 많은 경우를 방지하는 간단하고 효과적인 방법
4 TypeScript로 너무 많은 경우를 방지하는 간단하고 효과적인 방법
모든 프로그래밍 언어에 else가 존재하는 경우. 적절하게 사용한다면 나쁜 관행은 아닙니다. 간단하고 이해하기 쉬우며 유연한 논리 제어 구조입니다.
하지만 실제로는, 그것은 종종 과도하게 사용됩니다. 다음과 같은 경우 좋지 않을 수 있습니다.
else의 과도한 사용은 코드 냄새입니다. 코드베이스를 읽고 유지하기가 어렵습니다. 이 문제를 극복할 수 있는 많은 방법들이 있다.
이 기사에서는 TypeScript의 맥락에서 네 가지 접근 방식을 살펴보겠습니다.
1. 가드 및 조기 귀환
문제: 여기에 중첩된 if-else 코드 조각이 있습니다. 조작된 예로서, 상태 값의 돌연변이를 추적하는 것은 이미 쉽지 않습니다. 상황 로직을 더 추가하면 코드가 유지 보수하기 어려운 상태로 빠르게 확장되는 것을 상상할 수 있습니다.
해결책: 가드와 조기 귀환은 내가 가장 좋아하는 리팩터링 방법이다. 구현은 간단하며 빠르고 즉각적인 결과를 제공합니다.
이 경우 가장자리 케이스를 기능의 시작으로 이동합니다. 또한 3항 연산자를 사용하여 평문으로 된 경우 중첩을 단순화했다. 에지 케이스 조건이 충족되면 오류 상태가 즉시 반환됩니다.
리팩터링 후에는 코드가 선형으로 바뀝니다. 조기 반환은 오류 사례를 먼저 처리하므로 코드를 테스트하기 쉽고 오류 발생률이 낮습니다. 그 결과 가독성과 유지관리성이 향상됩니다.
2. 표구동법
문제: 아래 코드 조각의 목적은 한 달 동안의 일 수를 얻기 위한 것입니다. 물론 오류가 발생하기 쉽고 변경하기도 어렵습니다. 예를 들어, 윤년에 지원이 필요하면 어떻게 될까요? 유지관리는 악몽이 될 것이다.
해결책: 우리는 위의 코드 조각을 개선하기 위해 표 기반 방법을 사용한다.
그 결과는 훨씬 더 간결하고 읽기 쉽다. 이 방법은 입력 매개 변수가 상호 배타적일 때 더 적합합니다.
3. 추출
문제: 복잡한 조건들은 읽을 수 있는 한 문제가 되지 않는다. 다음 예제에는 조건 문이 내포되어 있고 복잡합니다. 어떤 상태인지 알 수가 없어요.
해결책: 위의 예를 리팩터링하기 위해 추출 방법을 사용한다. 중첩된 ifs의 여러 검사는 의미 있는 이름의 별도의 함수로 포장됩니다. 중첩된 if는 단순 조건 함수가 있는 경우 단일 if로 대체됩니다.
4. 기본값 및 '||' 연산자
문제: 다음과 같은 경우..그렇지 않으면 null을 확인하는 데 사용되며, 코드가 불필요하게 복잡하고 읽을 수 없습니다.
해결책: 매개 변수에 기본값을 부여하는 것도 개인적으로 가장 좋아하는 리팩터링 방법입니다. || 연산자와 결합하면 코드 복잡성을 줄이는 간단하고 효과적인 방법이다.
이 예에서는 상태를 기본값으로 지정하고 || 연산자를 사용하여 null 검사를 처리한다. 자바스크립트의 유연성 덕분에 코드 중복이 적고 코드가 더 잘 읽힌다.
근본 원인에 집중
만약의 과도한 사용은 다른 문제의 증상일 수 있다. 리팩터링 작업을 할 때는 증상만 고치는 것이 아니라 근본 원인에 초점을 맞춰야 한다.
함수는 입력, 내부 상태 및 출력으로 구성됩니다. 이 함수는 입력 파라미터를 가져와서 내부 상태 돌연변이를 실행하고 출력 결과를 반환합니다. if의 과도한 사용...다른 경우 다음과 같은 결과가 발생할 수 있습니다.
깨끗한 리팩토링을 하기 위해서는, 기능이 한 가지 일을 할 수 있도록 명확한 인터페이스를 만드는 데 집중해야 한다.
요약
우리는 만약의 과도한 사용을 제거할 수 있는 네 가지 간단하고 효과적인 방법에 대해 논의했다. 이러한 방법을 적용하면 더 명확하고 읽기 쉬운 코드를 작성할 수 있습니다.
만약의 경우에 다시 반응하는 다른 방법들이 있다.전략 패턴이나 책임 체인을 사용하는 것과 같은 다른 방법. 더 간단하고 실용적인 해결책에 초점을 맞추고 싶기 때문에 이 기사에서는 다루지 않습니다.
모든 접근 방식에는 장단점이 있기 때문에 모든 솔루션에 맞는 하나의 크기는 없습니다. 작업에 적합한 도구를 사용할 수 있는 능력은 좋은 개발자와 평균 개발자를 구분합니다. 이 문제를 해결하기 위해 선호하는 방법이 있다면 의견을 공유하십시오.
즐거운 프로그래밍 되세요!
from http://sup-poster.tistory.com/12 by ccl(A) rewrite - 2021-09-23 05:27:37