[英]What do you call a single header whose purpose is to include other header files?
[英]What do I name this class whose sole purpose is to report failure?
在我們的系統中,我們有許多類的構造必須異步進行。 我們將構造過程包裝在另一個從IConstructor
類派生的類中:
class IConstructor {
public:
virtual void Update() = 0;
virtual Status GetStatus() = 0;
virtual int GetLastError() = 0;
};
當前系統的設計存在一個問題-創建IConstructor
派生類的函數通常會做額外的工作,這也可能會失敗。 在這一點上,沒有得到可以查詢錯誤的構造函數,而是返回了NULL
指針。
重組代碼來避免這種情況是可能的,但是很耗時。 同時,我決定創建一個構造函數類,如果有錯誤我們將創建並返回該構造函數類,而不是NULL
指針:
class FailedConstructor : public IConstructor
public:
virtual void Update() {}
virtual Status GetStatus() { return STATUS_ERROR; }
virtual int GetLastError() { return m_errorCode; }
private: int m_errorCode;
};
以上所有這些都是一個世俗的問題的設置:我如何命名FailedConstructor
類? 在我們當前的系統中, FailedConstructor
將指示“一個構造Failed
實例的類”,而不是“一個表示構造另一個類的嘗試失敗的類”。
我覺得應該為其中一種設計模式(例如Proxy
或Adapter
命名,但是我不確定是哪一種。
編輯:我應該清楚地表明,我正在尋找一種答案,理想情況下,該答案應遵循一種GoF設計模式,或針對這種性質的其他一些公認的命名約定。
為了回答您的字面問題,我可能會使用ConstructorFailure
,因為它描述了失敗的事件。
但是,我可能會更進一步,將其設置為Exception
,在這種情況下, ConstructorException
聽起來不太破舊。 您有什么理由要返回此而不是將其拋出?
我將其命名為NullConstructor以與空對象模式(您正在使用的模式)一致。 參見http://en.wikipedia.org/wiki/Null_Object_pattern
引發異常。 也就是說,如果我正確理解了您的描述並且IConstructor對象的創建不是異步完成的。
雖然如果您沒有可用的例外,我可能會稱其為ConstructorCreationError
。 是的,它確實傳達了一種故障模式,但更准確地說,它是在傳達發生的特定錯誤。 另外,對我來說,以構造函數為最后一個詞似乎給出了錯誤的含義,但是您也可以在最后加上“ constructor”。
您也可以用SpawnConstructorError
, ConstructorGenerationError
類的詞來代替動詞“ Creation”,或者如果您是Chevalier博士的粉絲,也許是ErroneousConstructor
。
我選擇DummyConstructor
是因為它的唯一目的是模擬一個有效的Constructor
實例,但是它沒有實現任何實際功能。
FailureResponseConstructor?
您不是在創建失敗,而是在創建對失敗的響應。 因此,我認為任何與“響應”或“響應”的同義詞都是可行的。
如果您願意花費精力檢查針對“ FailureConstructor”的返回指針,我看不出為什么您無法針對NULL檢查它的原因?
除非您的系統旨在相互掩蓋組件故障,否則假設每個關聯的部件都工作正常就沒有任何意義。
我將根據Niall C.的評論進行處理FailedConstructorProxy
。 代理模式似乎最適合此類。 盡管它不是將方法調用中繼到一個對象,而是站在並生成我們希望實際構造函數返回的內容。
(如果有人給出了更正確的答案,請將其發布,然后我將其標記為已接受。我仍然不是100%確信這是正確的名稱!)
為什么不創建一個Failed
類來表示構造失敗並與FailedConstructor
一起使用的FailedConstructor
呢? 這樣命名是一致的。
我建議調用此類的FailedObjectConstructionHandler
來描述該類的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.