2009-09-08 128 views
3

我想繼承DevExpress ComboBoxEdit控件,並且想知道是否將我的類命名爲與DevExpress類相同是不好的做法。類繼承命名

這裏的派生類聲明:

using System; 
using System.Collections.Generic; 
using System.Text; 

namespace MyApplication.Components 
{ 
    public class ComboBoxEdit : DevExpress.XtraEditors.ComboBoxEdit 
    { 
    } 
} 

我應該重新命名MyApplication.Components.ComboBoxEdit到別的像MyComboBoxEdit?

回答

11

爲什麼要創建自己的ComboBoxEdit一定是有原因的。我會以班級的名義使用這個理由。

+1

原因是我重載了EditValue屬性以避免跨線程異常。我想我可以稱它爲ThreadSafeComboBoxEdit,但它只是如此冗長...... – Armbrat 2009-09-08 16:05:52

+1

不過比MyApplication.Components.ComboBoxEdit冗長! (通過頭髮。) – 2009-09-08 16:07:44

+4

我相信長的類名沒有任何問題。 – Vadim 2009-09-08 16:07:55

0

嗯,這樣做是合法的,但我會建議不要這樣做,因爲它只會導致混淆......爲什麼不把它命名爲「MyComboBoxEdit」或「SuperComboBoxEdit」或任何你喜歡的東西?

3

只有當您希望維護人員以千太陽的強度來憎恨您時,這纔是一個好主意。

0

從技術上講,你的班級已經有了不同的名字。你的類被命名爲「MyApplication.Components.ComboBoxEdit」,DevExpress類被命名爲「DevExpress.XtraEditors.ComboBoxEdit」。

也就是說,你的類可能與DevExpress類有不同的行爲。出於這個原因,你應該給你的新班級一個更具描述性的名字。

0

如果你不會爲你(以及你的同事/其他人在應用程序上工作)感到困惑,那麼使用相同的名稱是完全合法的 - 這就是爲什麼命名空間存在的原因。
否則,您可能想要在擴展基本類的原因後爲您的課程命名,例如ComboBoxEditThatAlsoDoesThisAndThat,而不是使用通用的我的前綴...

1

使用常識。 1)如果您的DevExpress組合框在整個應用程序名稱中都使用了不同的東西(但仍然是顯示其身份的東西)。

2)如果你有一個明確的約定,你將從某個命名空間繼承所有組件,並且只使用你自己的組件,那麼我看到這樣做沒有問題。

+0

現在我不能保證只有我的班會被使用,但我明白了你的觀點。 – Armbrat 2009-09-08 16:06:54

0

我也會建議反對命名衝突。關於名稱,如果你有理由創建一個繼承的控件,那麼你應該能夠給出一個有用的名字。

前綴是嚴重限制,並沒有什麼價值新人閱讀代碼。當你需要一個新的MyComboBox2時,你也有可能冒險進入MyComboBox2。

0

沒有什麼不合法的,但如果你最終在不同的文件中使用這樣的語句,你會遇到問題。

using DevExpress.XtraEditors; 

然後你最終在intellisense中埋入類名(因爲兩個類具有相同的名稱)。所以你必須明確地指定你使用的是哪一個類。

我假設......我從未使用過Dev Express。我不知道XtraEditors是否是一個命名空間。

+0

XtraEditors是一個命名空間。 – Armbrat 2009-09-08 16:10:41