こんにちは、技術研究所の「どらお」です。
今回はネーミングについての話をしたいと思います。
名前を付けるって難しいですよね。
私はロールプレイングゲームで、主人公の名前を設定するのにもかなり時間をかけてしまうタイプの人間です。
開発時にクラス名やメソッド名の名前を付けるときにも熟考します。
この記事をお読みのSEの皆さん、プロジェクトでは命名規則が遵守されていますでしょうか。
私が過去に配属されたスタートアップのプロジェクトでは、命名規則が整備されていないために統一感のないクラス、メソッドが出来上がり、リファクタリングにとても時間がかかったことがありました。
一例ですが、過去に経験したネーミングについての珍事?について紹介をしたいと思います。
「camelSnake_string」のようにキャメルケースとスネークケースが一つの変数に混在しているということがありました。
キャメルケースとスネークケースどちらが優れているのかという議論はしばしばおこります。
私個人としてはどちらでもよいというのが正直なところです。(経験上はキャメルケースを利用することが多いです)
皆さんハンガリアン記法はご存知でしょうか。
ハンガリアン記法(ハンガリアンきほう、英: Hungarian notation)あるいはハンガリー記法(ハンガリーきほう)とは、プログラマがプログラムのソースコードを書く際に変数名やクラス名などの識別子に特別な接頭文字ないし接尾文字をつけることで、他の人がその識別子を見たときに識別子の使用方法・データ型情報・スコープなどが分かるようにするための命名法である
※ウィキペディアより引用
この法則をDBのテーブル名に当てはめて、
tHoge ※tはテーブルの意味
のような命名がされていることがありました。※トランザクションのTかなと思ったのですが、規約にはばっちりとTはテーブルと記載されていました。。
テーブル名にテーブルを意味するtを付けるのっていまいちですよね
古くからあるプロジェクトに多い気がしますが、「zaikoSearch」のようにローマ字と英語が混ざった状態。 全部ローマ字になっていても読みずらいのでいやですが。
私自身が一番悩ましいのが英語の選択です。
英語が不得手の私としては、翻訳サイトをバリバリ活用するのですが、これが意外に厄介です。
なぜなら、翻訳サイトによって訳される単語が異なっていることが多々あるからです。
例えば「案件」という日本語をGoogle翻訳にかけると「Case」と訳されます。
しかしエキサイト翻訳では「Item」、Bing翻訳では「Project」となります。※2016年11月16日時点
翻訳する単語の意味に揺らぎがあるので致し方ないのですが、翻訳サイトを利用する側としては迷ってしまいます。
そこで紹介したいのがcodicというサービスです。 リンクはこちら。
codicは日本語を入力するとネーミングを生成してくれます。
動詞を入力するとメソッド名が、何々かどうかの形式で入力するとboolean値のネーミングをしてくれます。
それだけだと、翻訳サイトと対して変わりがないのですが、以下のような素晴らしい機能を提供してくれています。
WEBの翻訳サイトだと、調べた翻訳結果をプログラムように整形する必要がありますが、codicを使えば形式を自動変換してくれます。 この機能はEclipseからも利用可能でした。
辞書を自分で登録、更新できるため自分だけのネーミング辞書が作成できます。
Myルールやプロジェクトルールでネーミングが翻訳結果が意にそぐわない場合、単語が登録されてない場合は修正し登録しておくことが可能です。
さらに登録した自分の辞書をチーム内で共有できます。
知財として取りためておけば、細かな命名規則bookを作らなくてもよくなりそうです。
※ただし、Freeプランでできることには制限があります。
プランについてはこちら。
まだ、エンタープライズ利用については準備中のようです。
手軽に翻訳が出来て、辞書をカスタマイズすることができるcodicは強力なtoolになってくれると思います。
数年後に自分のソースを見返して、なんじゃこりゃ!とならないように、codicなどのサービスをうまく利用しつつ、よりよいネーミングを付けるように心がけたいですね。