【プログラミング】C#からプログラミング始めるとJavaやPythonのインポート地獄が煩わしく思う

記事サムネイル
1 : 2025/01/07(火) 18:05:06.351 ID:cRu/jDw60
importにこだわる理由ってなに?
2 : 2025/01/07(火) 18:05:25.984 ID:cRu/jDw60
なんか理由あるの?
3 : 2025/01/07(火) 18:06:05.886 ID:cRu/jDw60
usingのほうがすっきりしないか?
4 : 2025/01/07(火) 18:06:21.311 ID:Z4Ye0c9o0
イカれたメンバーを紹介するぜ
5 : 2025/01/07(火) 18:06:28.630 ID:cRu/jDw60
なんのクラス使ってるかわからんから的な理由?
6 : 2025/01/07(火) 18:06:32.362 ID:Vz7+NImnd
usingと殆どかわらんだろ
7 : 2025/01/07(火) 18:07:02.084 ID:cRu/jDw60
>>6
頭の行数が馬鹿みたいに違ってくるけど、、、
8 : 2025/01/07(火) 18:08:08.225 ID:4zJshyVb0
何も変わらんな
9 : 2025/01/07(火) 18:09:03.955 ID:cRu/jDw60
>>8
頭の行数が馬鹿みたいに変わるけど
Javaやってたら普通に頭が23行とかそのくらい行くんだけど
10 : 2025/01/07(火) 18:09:35.352 ID:cRu/jDw60
usingならあっても10以下とかじゃね?
11 : 2025/01/07(火) 18:10:19.143 ID:4zJshyVb0
でもお前使ってるのJavaじゃん
13 : 2025/01/07(火) 18:12:12.242 ID:cRu/jDw60
>>11
だからインポート地獄が煩わしいんだが
Pythonも昔onnxのimport直しまくった記憶あるわ
あれ.付いてないからな
pyinstallerでコンパイルできなかったからマジでムカついた
そんで誰もissueすら書いてないとか
12 : 2025/01/07(火) 18:10:54.768 ID:cRu/jDw60
ListやMapで2行使っちゃうじゃんね?
usingならGeneric一行
14 : 2025/01/07(火) 18:13:49.792 ID:Vz7+NImnd
>>12
それは名前空間の設計の問題だろ
15 : 2025/01/07(火) 18:15:57.929 ID:cRu/jDw60
>>14
複数のクラスをusing一つで呼び出せるんだから一緒じゃん?
importはクラスごとじゃん?
16 : 2025/01/07(火) 18:17:34.234 ID:cRu/jDw60
全部IDE任せだから別に不都合は無いんだけど見たときすっげぇ醜く感じる
IDEも不要なimportありますとかで削除促してくるしな
17 : 2025/01/07(火) 18:21:13.353 ID:yohlKfNsr
importもワイルドカードで一括インポートできるけどそれじゃだめなの
18 : 2025/01/07(火) 18:21:43.926 ID:cRu/jDw60
>>17
IDE任せだからワイルドカードにならない
19 : 2025/01/07(火) 18:22:26.807 ID:yohlKfNsr
Linterのルールをちゃんとしろ
ただJavaは名前空間がコンフリクトした場合に面倒なので大規模開発の場合は基本すべて個別インポートするんだけどね
20 : 2025/01/07(火) 18:23:06.739 ID:yohlKfNsr
IntelliJ IDEAならフォーマッターのルールにあるはず
VSは知らん
22 : 2025/01/07(火) 18:28:55.678 ID:cRu/jDw60
>>20
Eclipse
21 : 2025/01/07(火) 18:28:15.792 ID:cRu/jDw60
調べたらいい感じの答え出てきたわ

C#の場合は、使用する外部「モジュール」は、プロジェクトでまとめて.csprojに記述します。それで、using ディレクティブは、「モジュール」の読み込みのためではなくて名前空間のために存在します。

一方、Pythonのimport文は、他のモジュールをインポートするために使われ、モジュールを使用するためには必ず必要になります。

つまりC#はすでに取り込んであるライブラリを探すために用いられてPythonは逆にその文によってライブラリが読み込まれるから使えるようになるという事らしい

Javaは知らん

23 : 2025/01/07(火) 18:31:37.076 ID:JQ82oechr
>>21
その文で何を言いたいの?
JavaもCの説明と同じような感じになると思うんだけど
namespaceがないのでパッケージ単位にはなるけど
28 : 2025/01/07(火) 18:36:05.779 ID:cRu/jDw60
>>23
いやCじゃなくてC#ね
Javaはimportだけど
25 : 2025/01/07(火) 18:33:30.264 ID:JQ82oechr
そもそもデフォならワイルドカードでインポートされそうだけどどうなの
29 : 2025/01/07(火) 18:36:27.609 ID:cRu/jDw60
>>25
デフォでクラスごとのインポートだけど
31 : 2025/01/07(火) 18:36:57.233 ID:JQ82oechr
>>28
抜けてたわ
>>29
じゃあなんか設定すればワイルドカードでインポート出来るんじゃない
33 : 2025/01/07(火) 18:38:03.932 ID:cRu/jDw60
>>31
まぁ設定探してみる
サンクス
26 : 2025/01/07(火) 18:35:13.649 ID:JQ82oechr
言語仕様としてはインポートの部分でそこまで煩わしさは感じないし、プロダクションコードの場合はそもそもワイルドカードインポートを辞めろとなるし
27 : 2025/01/07(火) 18:35:18.960 ID:Yztn8DyD0
全部分からずに言うとるんか
30 : 2025/01/07(火) 18:36:30.642 ID:JQ82oechr
Javaのインポートで煩わしさ感じるのはパッケージ名が無駄に長いところくらいかな
32 : 2025/01/07(火) 18:37:41.581 ID:JQ82oechr
設定すればなんとかなる事をあたかも言語の欠点のように言うのマジで仕事できなさそう
34 : 2025/01/07(火) 18:38:21.897 ID:cRu/jDw60
>>32
実際import地獄なんだよなぁ
35 : 2025/01/07(火) 18:40:29.275 ID:/T9qL8J8M
C#のせいでMicrosoft信者になっちゃった
36 : 2025/01/07(火) 18:49:49.721 ID:x/Bvk09l0
import math,time,sys
って書けば行数少なくできるでしょ

コメント

タイトルとURLをコピーしました