packageに閉じるかどうかで命名の仕方が変わる
というのはありそう
globalに公開する関数や変数は、別のpackageと干渉する
同じ名前を使っていると、どっちを使うのが適切なのかの判断が難しい
これはpackageでなくても、objectのような単位でも同じ
User objectで、氏名を表現する時に、
わざわざtype User = { userName: string }と書く必要はなく
わざわざtype User = { name: string }で十分である、
というのと同じ
(当然、Userの中に別の名前があるならその限りではない)
そのコンテキストにおいて、正しく概念が分節されていることが重要なので、
それより上位の段階でコンテキストが区切られているなら簡潔な表現で良い
だから、
関数がファイルに対して、public/privateである、とか
moduleに対して、public/privateな境界を作れる、とか
そういった諸々のスコープに関する機能の有無で命名の仕方は変わってくるだろう
全く同じ構成で同じものを、別のツールを使っている時にも、「適切な命名の仕方」が変わるということ
例えば、TypeScriptはmoduleに対する境界を作る能力が乏しいので、
一度publicな関数を作ると、自然とglobalな名前として登録されてしまい、すぐに干渉してしまう
一概にそうとも言えないか
import Name as UserName from '..'ともできるし、
import * as User from '..';としてUser.Nameともできる
というかほぼ同じかもしれない、マージしてもいいかも
まあ重要なのは「長さ」ではないなmrsekut.icon
「具体性」とかじゃないか
「長さ」って表層の話で、本質はそこじゃないと思う