코드 대전 독서노트 14장 조직 직선형 코드 15장 조건문
1. 명확한 순서의 문장이 있어야 한다
명시적인 순서라는 문은 다음과 같은 순서에 따라 수행되어야 합니다.
$data = ReadDate();
$result = Calculate($data);
PrintResult ($result);
상기 세 문장의 집행 순서는 중요하다. 순서를 바꿀 수 없고 데이터를 읽은 후에만 계산할 수 있으며 인쇄 문장은 계산이 끝나기 전에 진행할 수 없다.
만약 문장 사이에 의존 관계가 있다면, 이러한 의존 관계를 뚜렷하게 하는 방법을 채택해야 한다.
1) 코드를 구성하여 의존 관계를 뚜렷이 한다.
2) 서브루틴 이름이 의존 관계를 돋보이게 한다.
좋은 명명 습관은 프로그램 사이의 순서를 표시하는 데 유리하다.(예를 들어 시작 부분 코드)
3) 서브루틴 매개 변수를 이용하여 의존 관계를 명확하게 나타낸다.
코드를 다시 써서 데이터를 매개 변수로 서브루틴 간에 전달하다.예를 들면 다음과 같습니다.
$result = 0;
ComputeMonthly();//
ComputeQuarterly();//
ComputeAnnualy();//
이 코드의 순서는 먼저 월도를 계산한 다음에 분기를 계산하고, 마지막으로 연도를 계산하는 것이다. 모든 계산은 이전의 계산 결과에 의존하고, 모든 계산 서브루틴은 $result의 값을 다시 쓴 다음에 다음 서브루틴이 그것을 사용한다.순서를 더욱 명확하게 하기 위해 다음과 같은 개선을 취할 수 있다.
$result = ComputeMonthly($result);//
$result = ComputeQuarterly($result);//
$result = ComputeAnnualy($result);//
4) 코드에 대한 설명을 주석으로 합니다.
의존 관계가 뚜렷하지 않으면 주석을 사용하여 코드를 설명하는 것을 고려할 수 있다.
5) 단언이나 상태 로고 변수를 사용하여 문장의 집행 순서를 표시한다.
변수를 사용하여 다음과 같은 명령문 실행 순서를 식별할 수 있습니다.
$order_flag = 0;
ReadDate()
{
。。。
$order_flag = 1;
}
Calculate()
{
if($order_flag == 1)
{
。。。ok
}
else
{
error;
return error;
}
$order_flag = 2;
}
PrintResult ()
{
if($order_flag == 2)
{
。。。ok
}
else
{
error;
return error;
}
$order_flag = 3;
}
그러나 새로운 변수를 도입하여 코드가 잘못될 가능성이 높기 때문에 부득이하지 않으면 이 방법을 사용하지 않는 것을 권장하지 않는다.
2. 순서와 무관한 문장
순서와 무관한 문장은 집행 순서에 의존 관계가 없는 몇몇 문장이다.
이런 문장을 잘 조직하면 코드 읽기에 유리하고 코드 읽기를 할 때 눈이 왔다갔다하는 것을 최대한 피한다.
다음 코드와 같은 관련 문을 함께 구성해야 합니다.
잘못된 코드 구성:
ComputeWorkerTotalNum();
ComputeBossAverageRevenue();
ComputeWorkerAverageRevenue();
ComputeBossSales();
ComputeWorkerExpense();
다음과 같이 구성해야 합니다.
ComputeWorkerTotalNum();
ComputeWorkerAverageRevenue();
ComputeWorkerExpense();
ComputeBossAverageRevenue();
ComputeBossSales();
3. if 조건문
1)if문장을 작성할 때 지켜야 할 원칙.
a:먼저 정상적인 코드 경로를 쓰고 흔치 않은 상황을 처리합니다.
b:등량의 지점이 정확한지 확인하세요(경계점 상황).
'>' 대신 '> =' 또는 '<' 대신 '<' 을 사용하지 마십시오. (수조나 순환을 조심하는off-by-one 오류와 유사합니다.)
c:정상적인 상황의 처리를if 뒤에 놓고else 뒤에 놓지 마세요.다음은 예입니다.
나쁜 실천:
if(inputError)
{
}
else
{
}
if(!processError)
{
}
else
{
}
, :
if(!inputError)
{
}
else
{
}
if(!processError)
{
}
else
{
}
이렇게 처리한 코드는 코드를 읽는 사람들로 하여금 코드가 정상적으로 처리되는 프로세스에 집중하게 할 수 있다.
d:블로 함수를 이용하여 복잡한 검측을 간소화한다.예를 들면 다음과 같습니다.
if(!error() && inputRight() && age==1987 ........)
{
do sth。。。。
}
:
function check()
{
return
}
if(check())
{
do sth。。。
}
2) 케이스 문
case 문장은 몇몇 상황에서if-else 문장을 대체할 수 있다
a:case에 대한 배열 순서 선택
알파벳 순서나 숫자 순서대로 여러 가지 상황을 배열하다
정상적인 상황을 앞에 놓다
실행 주파수에 따라case 자구를 배열하다
자주 집행하는 경우는 맨 앞, 가장 자주 집행하지 않는 경우는 맨 뒤다.
b:케이스 문장을 사용하는 비결
<1> 각 시나리오에 대한 작업을 단순화합니다.
만약 어떤 상황이 실행되는 상황이 매우 복잡하다면, 이 상황에 대응하는case에서 하위 프로그램을 쓰고, 조작 코드 세그먼트 자체를 이case 자구에 두지 마십시오.
예를 들면 다음과 같습니다.
case 'ok':
。。。。。
。。。。。
。。。。。
break;
:
function do_sth()
{
。。。。
。。。。
}
case 'ok':
do_sth();
break;
<2>case 문장을 사용하기 위해 변수를 만들지 마세요.
<3>default 자구를 실제 기본 상황을 검사하는 데만 사용합니다.
예: 케이스의 경우 1-3
좋지 않은 코드:
case 1:
。。
break;
case 2:
。。
break;
default:
.......
<4>default 자구를 이용하여 오류를 검출합니다.
예: 케이스 1-4 가능
case 1:
。。
break;
case 2:
。。
break;
case 3:
。。
break;
case 4:
。。
break;
default:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.