KisaragiEffective.github.io

Yeet.

View on GitHub

ユーティリティークラスについてのぼやき

なぜ人々はUtilなんて情報量ゼロの名前をつけたクラスに何でもかんでも押し込んでしまうのか? という問いをよく見かけますが、それは何でもボンボンと放り込んでいるというのが一つの答えです。 とはいえ、それがクラスじゃなければ、多少は事態がマシになるのではないでしょうか?

public class Util {
  public static int util1() {
    return 0;
  }

  public static int util2() {
    return 0;
  }

  public static int util3() {
    return 0;
  }

  public static int util4() {
    return 0;
  }
}

よくあるstaticメソッドのあつまりですが、一つやるべきことを忘れていますね。そう、念の為のコンストラクタ封印。 つまり、本来はこうすべきだったのです。

public class Util {
  private Util() {
  }
  // 後略
}

しかしまだボイラーコードです。

これはRubyで言うようなmoduleを採用することで解決できます。

# return や ; はつけなくても良い
module Util {
  def util1() {
    return 0;
  }

  def util2() {
    return 0;
  }

  def util3() {
    return 0;
  }

  def util4() {
    return 0;
  }
}

# Util.new # => エラー!

ということで Java にも専用構文来ないかなーーーーー