タグ: マジックナンバー magic number const enum 列挙型
数値の範囲や、桁数、定数コードなど、ある数値や文字列に固有の意味を持たせてることはよくある。
SetLength(Values, 100);
for n := 0 to 99 do
Values[n] := ...;
などの 99 もそう。
const や 列挙型 を使って、その意味に名前を付けるようにすると可読性、メンテナンス性に大きく貢献する。
(A) const を使う。
直値に名前を付ける。
const VALUES_SIZE = 100;
SetLength(Values, VALUES_SIZE);
for n := 0 to VALUES_SIZE - 1 do
Values[n] := ...;
(B) 列挙型に明示的に値を指定する
magic number が0~255のときのみ有効。
type
Size =(Small =5,Medium =10,Large =Small +Medium);
(C) 列挙型とconstの合わせ技
列挙型でつけた識別子に値を割り振る。
別のライブラリとの整合をとるときなどに便利。
type
TAlignment = (taLeftJustify, taRightJustify, taCenter);
const
Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
align: TAlignment;
options: WORD;
begin
align := taRightJustify;
option := Alignments[align];
end;
数値の範囲や、桁数、定数コードなど、ある数値や文字列に固有の意味を持たせてることはよくある。
SetLength(Values, 100);
for n := 0 to 99 do
Values[n] := ...;
などの 99 もそう。
const や 列挙型 を使って、その意味に名前を付けるようにすると可読性、メンテナンス性に大きく貢献する。
(A) const を使う。
直値に名前を付ける。
const VALUES_SIZE = 100;
SetLength(Values, VALUES_SIZE);
for n := 0 to VALUES_SIZE - 1 do
Values[n] := ...;
(B) 列挙型に明示的に値を指定する
magic number が0~255のときのみ有効。
type
Size =(Small =5,Medium =10,Large =Small +Medium);
(C) 列挙型とconstの合わせ技
列挙型でつけた識別子に値を割り振る。
別のライブラリとの整合をとるときなどに便利。
type
TAlignment = (taLeftJustify, taRightJustify, taCenter);
const
Alignments: array[TAlignment] of Word = (DT_LEFT, DT_RIGHT, DT_CENTER);
var
align: TAlignment;
options: WORD;
begin
align := taRightJustify;
option := Alignments[align];
end;