LoginSignup
2
2

More than 5 years have passed since last update.

ジャバ、名前

Last updated at Posted at 2014-12-14

ジャバでパッケージの名前空間を考えたり、クラスやフィールド、メソッドの名前を考えたりするときに自分が考えたことのメモ。

プログラミングについてよく分かってないので、アドバイスとか意見とかあれば歓迎です。

パッケージ、クラス

TilyEvaluator というライブラリがあるとする。TilyEvaluator にはメインのエバリュエーターと、それを実現するためのさまざまなマッチャ、エクスプレッション、ユーティルなどが存在している。

ルビーの場合

自分が慣れ親しんだルビーの場合はこんな感じのファイル構造にすると思う。

lib/
  |- tily_evaluator.rb
  `- tily_evaluator/
       |- matcher.rb
       |- matcher/
       |    |- one.rb
       |    `- another.rb
       |- expression.rb
       |- expression/
       |    |- one.rb
       |    `- another.rb
       |- util.rb
       `- util/
            |- one.rb
            `- another.rb

コードにするとこんな感じ。

class TilyEvaluator
  class Matcher
    class One
    end

    class Another
    end
  end

  class Expression
    class One
    end

    class Another
    end
  end

  class Util
    class One
    end

    class Another
    end
  end
end

ジャバの場合

ジャバの場合だったらこんな感じにすると思う。ジャバはパッケージ名前空間が必要だから、ここでは仮に tokyo.prgrphs.evaluator.* としている。

src/
  `- main/
       `- java/
            `- tokyo/
                 `- prgrphs/
                      |- evaluator/
                           |- TilyEvaluator.java
                           |- matcher/
                           |    |- AbstractTilyMatcher.java
                           |    |- OneTilyMatcher.java
                           |    `- AnotherTilyMatcher.java
                           |- expression/
                           |    |- AbstractTilyExpression.java
                           |    |- OneTilyExpression.java
                           |    `- AnotherTilyExpression.java
                           `- util/
                                |- OneTilyUtil.java
                                `- AnotherTilyUtil.java

パッケージの名前空間と、クラス名の名前空間を両方意識する必要があると思っている。

パッケージの名前空間は、そのままで tokyo.prgrphs.evaluator.* 配下のファイル構造。

クラス名の名前空間というのは、クラス名にあまりにも普遍的な名前 (たとえば String とか Pattern とか List とか) をつけてしまうと、標準ライブラリの名前と衝突してしまうこと。

衝突してしまってもエラーは出ないんだけど、import はできず、クラスを参照するときに名前空間をつけなくてはならなくなる。

prgrphs.tokyo.evaluator.util.String str = new prgrphs.tokyo.evaluator.util.String();

とかやらなくてはならないのでできる限り回避したい。(オープンソースでライブラリを提供する場合とかは特に回避したいと思う)。

2
2
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
2
2