DBの中間tableの命名
HogeとPiyoという個別の概念があって、これらの関係を定めたtableに対して、
hoges_piyo(n:1)とかhoge_piyos(1:n)という命名をするのは割と一般的(?)らしい
ちがった
前者もpiyo_hogesとするらしい
常にhas_manyとするらしい
この時点ですでにわかりにくいと思うが、「DBの世界ではそうする」といったん無理やり納得してみる
さらにORM系の何かを使っている時、この中間テーブルを表すEntityのclass名が、HogePiyosになる
これがめちゃくちゃ分かりづらい
e.g. ProductCategory
とあるフレームワークがこういう命名をしていた
これはProductとCategoryの中間テーブルをEntityにしたもの、という意味だが、
初見の解釈では、「普遍的なCategory」があって、もう少し詳細化した概念として「Product(における)Category」があるのかとおもった
つまり、ProductCategoryは「関係」であって、「Category」ではない
中身を見ればわかるが、中身を見ないとわからない
このやり方に従った場合、以下のようなものとはどう区別するの?
hogeとpiyoとhogeとpiyoの関係とhogeなpiyoてきな概念があるとき
e.g. CategoryとProduct
hoge_piyosとhogePiyosとかにすんのか?
1つの概念だが複数単語のやつがあるとき
e.g. programming language
この規則のもとでまさかproguramming_languageとは名付けられないだろう
programmingLanguageとかにすんのか?
とはいえ、「関連の意味」は考えるのも難しいし、パット見でどれとどれの関係なのかわかるか微妙な気もする
理想的には
hoges <|> piyoみたいな、何かしらの記号を中間に置くとか(無理だが)、
hoges_piyo_relationみたいな、「関係やぞ」というのを良い感じに明示してほしい
この辺をググったときにPHPとRubyの話ばかり出てくるな
「フレームワークの意向」とかはどうでも良くて、もっと一般的に「良いもの」の議論を読むなりしたい