if (N = 6) or (N = 8) or (N = 10)
then ShowMessage('OK');
코드가 더 작고 쉽게 읽을
procedure InTests;
var
N, K: Integer;
begin
N:= 1111;
if N in [6, 8, 10] // this is correct, readable and effective code
then ShowMessage('OK');
K:= 11;
if N in [6, 8, 10, K] // this is correct but less effective
then ShowMessage('OK'); // (compiler creates local 16-bytes set var)
K:= 1111;
if N in [6, 8, 10, K] // this is a bug (K > 255)
then ShowMessage('OK');
end;
in
연산자 대신 if
체인의 다음 절차를 고려하지만, 델파이 문서는 그것에 대해 침묵하고, 잠재적 인 문제점을 알고 있어야합니다.
문제는 예를
if N in [6, 8, 10]
then ShowMessage('OK');
만 괄호 안의 상수와 in
운영자의 사용은, 델파이 좋은 방법을 생각해야 하는가?
네,하지만 당신이 보여주고있다 리터럴이 아닌 상수. 즉, 나는'MEANINGFULNAME = 6; '을 const 섹션의 어딘가에서 선언하고'in' 조건에서 사용합니다. 리터럴을 사용하는 것은 좋은 습관 (검색하기가 어렵고 값을 변경해야 할 때를 놓칠 가능성이 높습니다)을 고려해야합니다. 당신은 진정한 순수한 프로그래머 : –
난 그냥 리터럴을 사용하여 코드에 의해 너무 많은 몇 번을 찔렀다 ... – kludg
있습니다 @MarjanVenema –