Considere el siguiente procedimientocorrecta 'en' el uso del operador
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
operador en lugar de if
cadena
if (N = 6) or (N = 8) or (N = 10)
then ShowMessage('OK');
hace que el código sea más compacta y fácil de leer, pero la documentación de Delphi no dice nada al respecto, y deberías ser consciente de los posibles problemas.
La pregunta es: ¿debería el uso in
operador con constantes solamente entre paréntesis, por ejemplo
if N in [6, 8, 10]
then ShowMessage('OK');
ser considerada como una buena práctica en Delphi?
Sí, pero muestra literales, no constantes. Es decir, tendría 'SIGNIFICADO_NOMBRE = 6;' declarado en algún lugar en una sección const y usarlo en la condición 'en'. Usar literales es algo que no consideraría una buena práctica (difícil de buscar, y es probable que se pierda uno cuando necesite cambiar un valor). –
@MarjanVenema Eres un verdadero programador purista :) – kludg
Lo tomaré como un cumplido :) No sé de purista, solo picó un par de veces más por código usando literales ... –