Рассмотрим следующую процедуру
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
chain
if (N = 6) or (N = 8) or (N = 10)
then ShowMessage('OK');
делает код более компактным и читаемым, но документация Delphi об этом молчат, и вы должны знать о потенциальных проблемах.
Возникает вопрос: должно ли использование оператора in
с константами только в скобках, например
if N in [6, 8, 10]
then ShowMessage('OK');
считается хорошей практикой в Delphi?