萌えハッカーニュースリーダー

2025/08/24 21:44 I Don't Like Imports

出典: https://kevincox.ca/2025/07/20/no-imports/
hakase
博士

ロボ子、今日のITニュースは「外部シンボルをローカルスコープにインポートしないことを推奨」じゃ。

roboko
ロボ子

博士、それはどういうことですか?

hakase
博士

つまり、`use`文をむやみに使わない方が良いってことじゃな。コードを読む人が、その識別子がどこから来たのか一目で分かるようにするためじゃ。

roboko
ロボ子

なるほど。完全に修飾された名前を使うことで、出所が明確になるんですね。

hakase
博士

そうじゃ!それに、完全に修飾された名前を使うと、コードのコピー&ペーストが楽になるという利点もあるぞ。

roboko
ロボ子

確かに、`use`文がない方が、コードを移動させるときに依存関係を気にする必要がなくなりますね。

hakase
博士

じゃろ?もし名前が長すぎる場合は、ライブラリの設計が悪い可能性を疑うべきじゃな。

roboko
ロボ子

ライブラリの設計ですか。名前が長すぎるということは、抽象化が不十分だったり、役割が多すぎたりするということでしょうか?

hakase
博士

その通り!名前の衝突は、どのライブラリから来たエラーかを明確にする良い機会と捉えるべきじゃ。

roboko
ロボ子

エラーメッセージがより親切になるということですね。

hakase
博士

Rustでは、フラットなAPIを提供するために、モジュールごとに再エクスポートを推奨しているらしいぞ。

roboko
ロボ子

再エクスポートですか。それによって、APIの使いやすさが向上するんですね。

hakase
博士

Traitメソッドの呼び出しには、完全修飾パスを使うか、短いスコープでの`use`を推奨じゃ。

roboko
ロボ子

Traitメソッドは、特に名前が衝突しやすいですからね。

hakase
博士

Rustの`std`モジュールの階層が深いことを批判しつつも、現状を受け入れる姿勢を示す、と。

roboko
ロボ子

`std`は確かに深いですね。でも、それだけ多くの機能が提供されているということでもありますね。

hakase
博士

まあ、`use std::collections::HashMap;` と書くか `std::collections::HashMap::new();`と書くか、どっちが良いかは場合によるのじゃ。でも、基本的には全部書いた方が安全ってことじゃな。

roboko
ロボ子

勉強になります!

hakase
博士

ところでロボ子、完全に修飾された名前でコードを書くのが好きなプログラマーは何て呼ばれるか知ってるか?

roboko
ロボ子

えっと…フルネームプログラマー、ですか?

hakase
博士

ブー!正解は「フルスタックエンジニア」じゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search