9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

JustSystemsAdvent Calendar 2017

Day 8

Javaでの変数名の付け方

Last updated at Posted at 2017-12-07

随所にあるまとめ記事

中でも簡潔にまとまった良記事があります。

Java言語の命名指針
https://qiita.com/rkonno/items/1b30daf83854fecbb814

私はここに書かれていることには賛成で、そうあるべきだと思います。ただ、いい名前が思い浮かばなかったら、どうしたらいいでしょうか?

基本ルール

プロジェクトでのコーディング規約に従うのは前提として、以下が望ましいと思います。

  • 名詞、もしくは名詞句
    • 動詞や動詞句はメソッドに使う
  • 省略しない
    • 読みやすく、誤解がないようにする
    • プロジェクト内で確実に通じる略語はOK
  • スペルミスに気をつける

具体例

FileOutputStream

たとえば、何らかの処理結果を出力するために使用する FileOutputStream を格納する変数の名前を考えてみます。

  • fos --- フォス……?? なんだかサッパリわかりません。(懺悔すると大昔私はこれを使っていました)
  • fileOutputStream --- 型はわかりますが。長さの割に情報量としては少ないと思います。
  • output --- 間違いではありませんが、漠然としています。

とここまでで。賢明なる読者の方はお気づきになったと思いますが、 型を変数名に入れるというのはあまり意味がない のです。最近はIDEで変数の型が何であるかはすぐわかりますし、私のようにIDEを使わない人でも、 宣言場所が簡単に見通せるほどシンプルなクラスやメソッド にしていれば問題ありません。メソッドの引数は当然ながら APIドキュメント に説明があるので型の名前を引数の名前に入れることは不要です。

ではどういう名前がよりよい名前でしょうか。上記記事にもありますが、 名前を見るとデータの中身が想像できる 名称がよいと考えます。私なりに言い換えると、 それが何者かを表す名前をつける のです。

たとえば、

  • resultCsv --- ああ、結果が記録されたCSVファイルなんだな
  • saleInThisYear --- ああ、今年の売上なんだな
  • commandOutput --- ああ、コマンド実行結果なんだな

のような感じです。

XxxxService

  • XxxxController に1対1で対応する XxxxService であれば、単に service としても差し支えないでしょう。
public class XxxxController {
    /**
     * Xxxxの実務を担うサービス。
     * コンストラクタインジェクションで代入する実装方針なのでここで {@code @Autowired} はつけない。
     */
    private final XxxxService service;

いい名前をつけた自慢が聞きたい

どういうクラスのどういうフィールド、どういうメソッドのどういうローカル変数に、こんないい名前をつけた(あるいはついていてすごいと思った)ものをコメントで紹介していただけると嬉しいです。

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?