質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

Q&A

解決済

3回答

9643閲覧

異なる名前空間に同じクラス名のクラスを配置することについて

baz

総合スコア14

Namespace

各要素の名前の重複による衝突が起こらないよう、一意の名前をつけなければならない範囲のことであり、また、プログラミングにおける識別名を付加する機能のをNamespace(名前空間)と呼ぶ。

オブジェクト指向

オブジェクト指向プログラミング(Object-oriented programming;OOP)は「オブジェクト」を使用するプログラミングの概念です。オブジェクト指向プログラムは、カプセル化(情報隠蔽)とポリモーフィズム(多態性)で構成されています。

0グッド

0クリップ

投稿2018/09/29 02:55

編集2018/09/29 06:13

タグにC#をつけていますが、C#に限った話ではなく、名前空間という概念を持つ言語の場合でもよいです。

疑問

主題の通りですが、例えば HogePiyo という名前空間があるとします。
その名前空間それぞれに Foo という同じ名前のクラスを定義するということの是非について疑問です。

イメージとしては以下の感じです。

cs

1namespace Contracts 2{ 3 // 契約上の顧客クラス 4 public class Customer 5 { 6 ... 7 } 8}

cs

1namespace Deliveries 2{ 3 // 配送上の顧客クラス 4 public class Customer 5 { 6 ... 7 } 8}

個人的には、上記の「契約上の顧客クラス」と「配送上の顧客クラス」というものが概念上存在するので、このようにクラスの名前付けをしたいのですが、以下の点が気になっています。

  • 可読性上問題ないのか?
  • そもそも慣習的にこういうことはタブーなのか?
  • 一般的にこういうことはされているのか?

ご意見宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/09/29 03:24

言語限らないのであれば「Namespace」タグのみにされては?(「オブジェクト指向」は必要そうですが)
baz

2018/09/29 06:13

おっしゃる通り変更いたしました。
guest

回答3

0

ベストアンサー

C# ならたとえば System.Windows.Controls.Control や System.Windows.Forms.Control があります。
Windows Forms と Web Forms と WPF で当たり前のように違う名前空間で同じクラス名を使っています。
だから、ありかなしかで言えばありです。
メジャーな前例があるので文句は言いにくいでしょう。

ただ、単に ListView と言った時にどの ListView かわからないなどの不都合はあります。
もし同じクラス名を作るのであれば同様の混乱が起きることを想定して対策をとってください。

投稿2018/09/29 03:00

Zuishin

総合スコア28656

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

baz

2018/09/29 03:03

早速のご回答ありがとうございます。 Zuishin 様としては、今までの経験上、プロジェクトでこういうやり方はされていますでしょうか。それともこういうときは ContractCustomer や DeliveryCustomer などの名前にされますでしょうか。
Zuishin

2018/09/29 03:10

したことはありますが、using すると結局個々に名前空間で修飾しなきゃいけなくなるので同じ場面で使う可能性のあるものには違う名前をつけます。 System.IO.Path と System.Windows.Shapes.Path なんか鬱陶しいですね。
guest

0

ケースバイケースです。文法間違いでない以上意図する場合もあるでしょうし、意図せず結果的にそうなるということもあるでしょう。

名称統一したいと思うこともあれば、別物は名前を変えるべきと考えることもあるでしょう。場合によりけりです。

投稿2018/09/29 09:43

HogeAnimalLover

総合スコア4830

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

java の場合です。
この画面は eclipse という IDE で list クラスを import せずに記述したときに、
どの パッケージの List を import するかの選択ダイアログです。
イメージ説明

投稿2018/09/29 09:36

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問