IT ニュース&コラム 2018/ 7/16 通巻767号 技術版 ソフトウェアデザイン館 Sage Plaisir 21  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ■■ メンバー変数は、グローバルのスタイルにする - リーダブル コード(52) ■■ 前回は、関数の引数をグローバルとローカルの両方のスタイルにすると、メリットが あることと、キャピタライゼーション ルール(大文字・小文字のルール)に基づく と読みやすいことを説明しました。 今回は、「メンバー変数」(C言語の構造体やクラスの中の変数、Javaのクラス変数 やインスタンス変数)のスタイルを何にすると読みやすいかを説明します。 前回、ローカル変数の先頭の文字を小文字にすることで、ローカルに検索すべきことが 分かり、関数名の先頭の文字を大文字にすることで、グローバルに検索すべきことが 分かることを説明しました。 また、ローカルかグローバルのどちらの検索をするかを 間違えるとかなりの時間を取られることも説明しました。 メンバー変数についても、この方針にするのが良いでしょう。 もしかすると、メンバー変数について意味を検索することなんてないと思っている方が いらっしゃるかもしれません。 もし、そうなら、ローカルかグローバルのどちらで あるか分からなくてもよいでしょうが、意味を調べることは本当にないでしょうか。 MSDNやW3Cのドキュメントを見れば分かるように、メンバー変数についての説明は 書いてあります。 その説明から理解することも必ず経験しています。 やはり、意味を 知るために、ローカルかグローバルのどちらの検索であるかを見分けられるように すべきなのです。 メンバー変数の意味を説明するドキュメントがあるということは、メンバー変数名が 見出し、その説明が本文、という構成になっているということです。 見出しの先頭の 文字を大文字にすることが、キャピタライゼーション ルールであるので、 メンバー変数名の先頭の文字も大文字にすべきです。 メンバー変数はグローバル変数ではないし、ファイル スコープの変数でもないので、 ローカルかグローバルのどちらなのか迷うかもしれません。 しかし、そのローカルと グローバルではありません。 ローカルに検索すべきかグローバルに検索すべきかなのです。 メンバー変数は、グローバルに検索するものなので、メンバー変数名の先頭の文字は 大文字すべき、つまり、Pascal ケースにすべきとなります。 ExampleClass object; // object は、ExampleClass という型の変数 object.Attribute = 123; // Attribute はメンバー変数 object.Method(); // () があるので、Method はメンバー関数 また、メンバー変数名は、ピリオドの区切りが目立つよう、アンダースコアをなるべく 含めないのがよいので、Snake ケースよりも Pascal ケースにすべきです。 関数定義の中で、参照するメンバー変数名や呼び出すメンバー関数名の先頭を大文字で 書くことは、一般の文章のスタイルと異なると思うかもしれません。 しかし、一般の 文章でも、「〜の章を参照してください」といったリンク先を示す場合、見出しと 同じく先頭を大文字にします。 プログラムでは、リンク関係が非常に多いため、 一般の文章とスタイルが違うと感じるだけなのです。 そもそも、Visual Basic のように大文字と小文字を区別しないプログラミング言語 であれば、見出しに相当する関数定義における関数名の先頭は大文字、関数定義の 中から呼び出すときに記述する関数名の先頭は小文字、ということができたのですが、 なぜか世界のプログラマー(一般の文章を書く人以外)は大文字と小文字は違うから 区別すべきと考えてしまっており、プログラミング言語も大文字と小文字を区別して しまうようになってしまいました。 ファイル名も同様です。 しかも、区別すべきと思いきや小文字に統一しようなんて、まるで逆のコーディング ルールまで横行してしまっており、非常に矛盾したルールになってしまっています。 コーディング ルールによって、読みにくくなってしまうコードなのに、文書はコード があるから不要だとも言ってしまっています。 コードを文書にしたいのであれば、読みやすくするために、一般の文書のルールに 従うべきなのです。 Pascal ケースや Snake ケースのどちらかに統一すると、 略語と同じく、情報を失うことになるのです。 関連: this ポインターを省略するな - リーダブル・コード(31) http://blog.livedoor.jp/sage_p/archives/51972067.html ■■ 注目ニュース 一覧 ■■ ◇ Gmail へのアクセス問題で揺らぐシリコンバレーのプライバシー論。 https://japan.cnet.com/article/35122056/ http://www.itmedia.co.jp/news/articles/1807/10/news071.html … Gmail は、いつのまにか、機械が読んでいるのではなく、開発者が見ていた。 ◇ 15分単位で時を示す腕時計 Order。時間厳守に一石、ニューヨーク地下鉄モチーフ。 https://japan.cnet.com/article/35121789/ … 休日に使いたい。 ◇ Google Chromeでダウンロード爆弾の不具合が復活、Firefoxなどにも影響。 http://www.itmedia.co.jp/enterprise/articles/1807/05/news073.html … めずらしく Internet Explorer と Micrsoft Edge 以外が全滅のバグ。 ◇ AIやVRも“学び放題”のプログラミング教室 TECHCAMP。すべての学びの入り口に。 https://japan.cnet.com/article/35122107/ … プログラミングはお金を払って勉強することになってしまった。 ◇ 下火になったランサムウェア、それでも警戒を解くべきでない理由。 https://japan.zdnet.com/article/35122071/ … クリプトジャッキング攻撃が増えているが、ランサムウェアの被害率も上昇。 ◇ キーボードに残された体温でパスワードを推測する攻撃手法。スパイ映画さながら。 https://japan.cnet.com/article/35122206/ … ネットを使わない標的型攻撃の手法。 ◇ 包帯もハイテク化へ。患部の状態を検知して薬を出すスマート包帯。 https://japan.cnet.com/article/35122197/ … 炎症が発生したら薬を増やす。 ◇ INFOBAR新モデルが3年ぶりに発売へ。初代で実現できなかったフレームレステンキー。 https://japan.cnet.com/article/35122267/ … ガラケーは、まだ売れるのだろうか。 ■■ ソフトウェアデザイン館 Sage Plaisir 21 ■■ ホームページ >>> http://www.sage-p.com/ メルマガ >>> http://www.mag2.com/m/0000083983.html ブログ >>> http://blog.livedoor.jp/sage_p/ ツイッター >>> http://twitter.com/Ts_Neko ダウンロード >>> http://www.sage-p.com/freesoft.htm サポート掲示板 >>> http://www.sage-p.com/kg_ban09/z6037C8.cgi 東日本大震災 >>> http://www.sage-p.com/saigai.html メール >>> ts-neko◇sage-p.com ←◇を@に変えてください 緊急メールは件名に「うどんメール」を付けてください。 このメルマガの登録・解除 - http://www.mag2.com/m/0000083983.htm