mmag

ハマったことメモなど

hexパッケージの名前付けについて小言を並べる

前回はvalidate_confirmationという関数のことを書きました。

今日はhexパッケージの名前はどうあるべきかについて思うトコロを書いていきます。

なんでこんなことを書こうと思ったかというと、hex.pmに"Naming your package"というセクションが設けられたからなのです。

hex.pm

ここには2つの注意が書かれていて、ザックリ書くとこんな感じ。

  1. 他人を傷つけるような言葉は避け、広く受け入れられる名前にしましょう
  2. 既存のパッケージ(例えばplug)を拡張するパッケージには、plug_xxxxといった名前をつけましょう

ここで私はもうひとつ、ex付けちゃう問題について書いておきます。

ex付けちゃう問題

Elixirのパッケージには、"ex"が付いたものが多く存在します。たまに"elixir"が付いているものもあります。これは他の言語にも言えることですが、Rubyなら"rb"、Crystalなら"cr"など、その言語の名前の一部をパッケージ名に入れたくなりがちです。自分もやってしまったことはあるので偉そうなことはそれほど言えませんが、少なくともモジュール名には入れないほうがいいのではないかなと思っています。

よいとこ
  • Elixirのパッケージであることが名前だけですぐわかる
よくないとこ
  • 2文字くらい長くなる

hex.pmで検索している時点でそこにあるのはElixir(とErlang)のパッケージなのでelixirであることは分かっています。ただしGitHubだとそういうわけにはいきません。あと他の言語のものに影響されて移植版をつくったとかいうケースだと、付けたくなる気持ちはわかります。あと2文字くらい別にいいじゃんというのもわかります。ということで、

  • パッケージ名にexを付けるのはセーフ
    • elixirはアウト
  • モジュール名にExを付けるのはセーフ
    • Elixirはアウト
  • リポジトリ名にex, elixirを付けるのセーフ

というところかな〜と思います。他の言語のものと並ぶような場所では付けるのアリ、Elixirのコードに入ったら付けるのナシ、で。

ExUnitとかExDocEx付いちゃってるんですけど、これは公式なのでOKということで...

おやすみなさい。