Effective Coding with VHDL: Principles and Best Practice (The MIT Press), p.416
ルーチンの主たる目的がブール値を返すことである場合は、「何々は何々だ」(assertion)という形か、「何々ですか?」(question)という形か、いずれかでそのルーチンに名前を付けるべし(非公式訳)
多くの函数には、true、falseのどちらかを返すテストが含まれています。このようなルーチンはpredicate functionと呼ばれます。あまりに単純すぎて、わざわざルーチンにするほどではないように思うかもしれませんが、これには大きなメリットが2つあります。1つは、ルーチンを呼び出す側のコードが簡潔になることです。もう1つは、true/falseに関するテストが複数回実行されるときに重複が解消することです。
この種の函数に名前を付けるときによく使われるのが、アサーションをベースにして名前を付けるという方法です。アサーションというのは、「何々は何々である」という形の文のことです。このガイドラインに従って名前を付けた函数の例をいくつか示します。
function pixel_is_transparent(pixel: pixel_type) return boolean;
(略)
この名前が妥当かどうかは、下のように実際にif
文の条件文として読んでみれば分かります。函数がどのように実装されているのかがまったく分からなくても、コードの意味は明らかです。
if pixel_is_transparent(x, y) then ...
(訳註: 「もしも座標x,yのピクセルが透明ならば、...」のように普通の文章として読める)
(略)
もう1つの方法は、アサーションではなく質問する形で函数に名前を付けるという方法です。この方法でも構いませんが、下に示したように英語では必ずしも普通に読める文章にはなりません。
if is_transparent(x, y) then ...
(略)