8

私は英語を母国語としないので、ブール値を返す関数の命名規則に戸惑いました。

私は、次の関数名が従来のものであることを知っています。

bool is_valid();
bool is_sorted();
bool is_empty();
bool has_children();
bool can_draw();

ただし、「is、are、can、has など」以外の動詞で始まる別の関数名も、次のように慣習的であるかどうかは疑問です。

bool TryToCloseWindow();    // check to see if the user tries to close the window
bool IntendToCloseWindow(); // as above
bool FileExists();          // check to see if the file exists

あなたが英語のネイティブ スピーカーでありプログラマーである場合、3 つの関数名は慣習的だと思いますか?

4

3 に答える 3

8

タイトルの質問への簡単な回答: 違います。さまざまな慣習がたくさんあり、おそらくプログラマーよりもさらに多くの慣習があります。関数の名前を返すすべての bool の先頭に「is」を付けたい慣習もあれば、そうでない慣習もあります。アンダースコア、CamelCase、lowerCamelCase などについて質問したり議論したりしないでください。選択したものに固執する限り、それらはすべて等しく読みやすくなります。

重要なのは、関数名が何をしているかを表すことだと思います。bool を返す関数は、多くの場合、条件またはループのコンテキストで使用されます。したがって、意図した名前をそのような文脈に入れ、それが正しいかどうかを確認するのが最善だと思います. たとえばif (fileExists()) { /* ... */ }、いいですね。tryToCloseWindow()「ねえ、コンパイラ/プログラム、そのウィンドウを閉じてください」のように聞こえます。あなたのコメントは、あなたが望むものではないヒントを与えてくれます。おそらく「userIsClosingWindow()」などを使用してください。「意図」は、関数名に使用する動詞ではありません。sthを意図する。は、あなたがやりたいことを意味します。あなたはそれを念頭に置いています。あなたはそれについて考えていますが、実際の行動はありません。だからもしあなたがウィンドウを閉じるか、そのままにするか、そのままにしておきます。コンパイラに「ねえ、そのウィンドウを閉じるつもりです。数行で実際にそれを行うかもしれません...」と伝える必要はありません。また、ユーザーがウィンドウを閉じるつもりかどうかを判断する手段がありません。彼が Microsoft Mindreader デバイスを USB ポートに接続していて、API にアクセスできない場合は、リンクを送ってください。よろしくお願いします ;)

于 2012-11-30T07:34:25.280 に答える
1

一般に、これは小文字で始まる以下のような命名規則でなければなりません。

bool tryToCloseWindow();    // check to see if the user try to close the window
bool intendToCloseWindow(); // as above
bool fileExists();          // check to see if the file exists
于 2012-11-30T05:27:18.303 に答える
0

のような名前を使用している場合は、isValid()より意味があります。

trueの値などを返すfalseのでif(isValid()) ...、誰でも簡単に概念を理解できます。

通常、すべての組織が同じ命名規則に従っているわけではありません。それは会社ごと、開発者ごとに異なります。

于 2012-11-30T05:39:02.050 に答える