/note/tech

DBのcolumn名や、何らかドメインの意味を持つ概念に type を名付けない方が良いのではないか

要約:

■ 1. type という命名を避けるべき理由

  • type やそのサフィックスを持つ名前(_type など)を変数、構造体・クラスのメンバー、データベースのカラムなどに付けてしまうことがしばしばあるが、あまりやらない方が良い
  • 理由1(予約語との衝突):
    • type はいくつかのプログラミング言語において予約語になっており、そのセマンティクスにおいて特別な役割を果たすことが多い
  • 理由2(フレームワークとの衝突):
    • Ruby on RailsにおいてはDelegated Typesという機能において_type というカラムは特別な意味を持つ
    • もちろんアプリケーションコード側でDelegated Typesであるという宣言をしなければ副作用は無い
    • その他のフレームワークに似たようなものがあるのかは不明である
  • こういった概念との衝突を避けるために特別かつ強い理由が無い限りは type という命名は避けるという方針

■ 2. 代替案

  • 代替としては kind や method などが使えそうである
  • これらを採用することが多い
  • method は別の概念との衝突がある場合もありそうだが、そこは文脈に沿って対応する

■ 3. 例外的にtypeを使用する場合

  • どうしても type でしか表現できないものはあると思われる
  • 例えば言語処理系を作っていて本当に「型」を取り扱う必要がある場合などである
  • そういった場合は頑張る必要がある

MEMO: