import文から依存関係を読み取る
振り返れば、今まで一緒に書いてた人に3度ほど、そのへんが論点になることがあった
1人目: import文多いからコメントで区切りたい
2人目: その人が区切って書いていたので意図を聞いたことがあった
一応考えてるがなんとなくです、みたいな返答だった
mrsekut.iconは今までコードを読むときにimport文のところをほぼ読んでなかった
そこを読まなくても、内部のコードの構造を見れば、何をやってるかわかる
moduleの依存関係に関する意識が低かったのだと思う
PBLでやってきてたのが大きいかもしれない
VSCodeで、自動でimportが補完されたときの場所が相応しくない
だから、めんどいので気にしなくて良くない?という感じの意識
これを人間が手動でやるのも変
機械的に認識できることなので
かといって、アルファベット順にsortする、とかも意味ない
何かしらのルールを書いて、saveしたときに自動的にその順序でformatできるようになってないといけない
私はこのインポートが無意識に積み重なっていく状況を、逆転の発想でリファクタリングに活用しています。 具体的な手順:
なんか書いてるコードがごちゃってることを感知する
インポート文を1行削除する: 特に階層の深い、1行の長いインポート文を選ぶのがおすすめです。
静的解析でエラーが出ることを確認する: 動的型付け言語ユーザーはLINTツールやIDEなどを活用してください。
エラー内容を観察する: この過程でたった1行の関数呼び出しなどのためにインポートしていることなどが判明することがあります。
より上位のモジュールに集約して解決できないか検討する: インポート文を合体させて強くしていくイメージです。注意点としては集約を目的にすると不都合な結合も引き起こすことがあります。
おもしろmrsekut.icon
a.fと使うならfを明示的にimportする必要はないが
classを使う言語だとこちらが多い
f(a)と使うならfをimportする必要がある
ufcsがサポートされていない関数型言語だとこちらが多い
外部への依存の数は全く同じでも、後者のほうがimport文が膨らむ