プログラマyasuhoの隠れ家

某ソフトウェア企業に勤務するおじさんプログラマyasuhoです

名前より内容にこだわれ


私が名前のつけ方以上に重要だと考えていることがあります。それは名前を考える前にプログラム構造を見直すということです。うまく構築されたプログラムでは個々の目的がはっきりしているので、名前のつけ方に悩むことは少ない気がします。どのような名前をつけるか悩むのではなく、その対象となるプログラムの内容にこそ、注意を払うべきではないでしょうか。

名前のつけ方


がりゅう さんのBlogより:


諸悪の根源は物理的:なぜ正しい名前が必要か

何のことは無い、「初めての人が混乱する」だけではなく、「熟練者も常に混乱する」という理由である。


「処理内容を簡潔に分かりやすく」が一般的に言われている「よい名前」でしょうか。しかし私は変数や関数などの名前を考える時いつも悩んでしまいます。後で名前を変えてしまうこともしばしば。おそらく名前をつけるという作業にはある程度のセンスが必要なんじゃないか!?とすら思えてしまいます。


プログラミングにおける命名をうまく行うにはどうすればよいのでしょうか。

私の命名方法


みなさんの参考になるかどうかはかなり疑問ですが、私がプログラムで名前をつける時に気をつけている方法を紹介したいと思います。もしも参考になるようでしたら幸いです。

難しく考えない


名前は最初に思いついたものにします。


関数名などはついつい凝った名前にしてしまいがちです。処理を具体的に表現することにこだわって、辞書などを参照する場合もあるでしょう。しかし、一生懸命考えた名前に限って、それほどシンプルに内容をあらわしていないことも多いものです。そもそも後で見た時に自分が分かりません(笑)的確な英語がない時はローマ字だっておっけー。:)

他のソフトを参考にする


同じような機能を持つAPIセットやソースコードを参考にします。


特に自分が分かりやすいと思ったものを参考にすることが多いですね。プログラムの命名規則には、本に書いていない暗黙のルールのようなものが多く存在します。なぜそのようになっているかは眺めているうちに分かったりしますので、よいところは積極的に取り入れていくように心掛けています。

命名規則を統一する


すでにあるコードに対して追加したり修正したりする時は、命名規則を合わせます。


これはプログラミング全般に言えることですが、コードは一定のルールの元に書かれていることが望ましいです。コードを修正する人が全ての部分を理解していれば問題はないのですが、実際は全てを見きることは難しいです。ある部分だけ違った書き方をしていると、思わぬバグの原因になったりしがちです。

場合によっては機能分けをする


いろいろな役割があって名前を決めかねる場合は、機能別に分けることもあります。


一つの変数や関数にいろいろな機能を持たせる場合があります。こういう場合は機能を分けるためにWrapperやMacroを使った方がよいでしょう。機能が明確になることで、利用者にも分かりやすいものとなります。

もっと大事なこと


私が名前のつけ方以上に重要だと考えていることがあります。それは名前を考える前にプログラム構造を見直すということです。


関数や変数、クラスやオブジェクトというものは、それだけで何か意味を持って存在していることはみなさんもご存じの通り。命名に悩むことがあるとすれば、目的や意味があいまいになっていないでしょうか。


プログラムは通常いくつかのモジュールから構成されています。データはオブジェクトやGlobal変数などで管理されます。これらをどのように構成するかはプログラム次第ですが、機能単位に理論整然と配置することはけっこう難かしいものです。


さらにプログラムは機能追加や変更で機能的に重複するような部分がどんどん増えていきます。同じような機能なのに、Func1()/Func2()という名前をつけてしまった経験はありませんか!?


うまく構築されたプログラムでは個々の目的がはっきりしているので、名前のつけ方に悩むことは少ない気がします。どのような名前をつけるか悩むのではなく、その対象となるプログラムの内容にこそ、注意を払うべきではないでしょうか。