考慮以下過程操作者的正確「在」操作符的使用
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 = 6) or (N = 8) or (N = 10)
then ShowMessage('OK');
使得代碼更加緊湊和可讀,但Delphi的文檔是沉默它,並你應該意識到潛在的問題。
的問題是:應該在in
運營商使用,只有在括號中的常量,例如
if N in [6, 8, 10]
then ShowMessage('OK');
被認爲是在Delphi中的好做法?
是的,但你顯示的是文字,而不是常數。也就是說,我會將'MEANINGFULNAME = 6;'在const部分中的某個地方聲明並在'in'條件中使用它。使用文字是我不認爲是一種好的做法(很難搜索,而且當你需要改變一個值時你很可能會錯過)。 – 2012-01-29 09:48:53
@MarjanVenema你是一個真正的純粹程序員:) – kludg 2012-01-29 09:58:33
我會把它當作讚美:)不知道純粹主義者,只是通過使用文字代碼刺激了很多次...... – 2012-01-29 10:00:56