名前のフォーマットで情報を伝える/Use Name Formatting to Convey Meaning

名前の書式を使用して意味を伝える


アンダースコア、ダッシュ、および大文字を使用する方法で、さらに多くの情報を名前に入れることができます。

たとえば、Googleのオープンソースプロジェクトで使用されている書式設定の規則に従うC ++コードを次に示します。

static const int kMaxOpenFiles = 100;
class LogReader { 
    public:
        void OpenFile(string local_file);
    private:
        int offset_; DISALLOW_COPY_AND_ASSIGN(LogReader);
};

エンティティごとに異なるフォーマットを使用することは、構文強調表示のようなものです。これは、コードをより簡単に読むのに役立ちます。

この例の書式設定のほとんどはかなり一般的です。クラス名にCamelCaseを使用し、変数名にlower_separatedを使用しています。 しかし、他の慣習の中にはあなたを驚かせるものがあります。

たとえば、定数の値は、CONSTANT_NAMEではなくkConstantNameの形式です。 このスタイルは、慣例によってMACRO_NAMEである#defineマクロと簡単に区別できるという利点があります。

クラスメンバ変数は通常の変数と似ていますが、offset_のようにアンダースコアで終わらなければなりません。

最初は、この慣例は奇妙に見えるかもしれませんが、すぐに区別することができます

他の変数のメンバーは非常に便利です。 たとえば、大きなメソッドのコードを見て、次の行を見ているとします。

stats.clear();

statsはこのクラスに属しますか? このコードはクラスの内部状態を変更していますか? member_規則が使用されている場合、すぐに結論できます。

いいえ、statsはローカル変数でなければなりません。

それ以外の場合は、stats_という名前になります。

その他の書式設定の規則

プロジェクトや言語のコンテキストによっては、名前に詳細な情報を含めるために使用できる他の書式設定規則が存在する場合があります。

例えば、JavaScript:The Good Parts(Douglas Crockford、O’Reilly、2008)の著者は、「コンストラクタ」(新しく呼び出されるように意図された関数)を大文字にし、通常の関数を小文字で始めることを提案しています。

var x = new DatePicker(); // DatePicker() is a "constructor" function 
var y = pageHeight(); // pageHeight() is an ordinary function

もう一つのJavaScriptの例があります:jQueryライブラリ関数(その名前は単一文字$です)を呼び出すときに便利なのは、jQueryの結果の前に$を付けることです。

var $all_images = $("img"); // $all_images is a jQuery object 
var height = 250; // height is not

コード全体を通して、$ all_imagesはjQueryの結果オブジェクトであることは明らかです。

最後に、HTML / CSSについての最後の例を示します。

HTMLタグにid属性またはclass属性を指定する場合、アンダースコアとダッシュは有効な文字です。 可能なコンベンションの1つは、アンダースコアを使用してIDとダッシュの単語を区切ってクラス内の単語を区切ることです。

<div id="middle_column" class="main-content"> ...

このような規則を使用するかどうかは、あなたとあなたのチーム次第です。 ただし、どのシステムを使用する場合でも、プロジェクト全体で一貫性を保つ必要があります。

参考文献:

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック

The Art of Readable Code: Simple and Practical Techniques for Writing Better Code (English Edition)

The Art of Readable Code: Simple and Practical Techniques for Writing Better Code Kindle (English Edition)

1件のコメント

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です