2008-09-25 70 views
7

我幾乎覺得很尷尬,但我總是在爲如何組織異常定義而苦惱。我之前完成的三種方法是:你如何組織異常定義?

  • 使用file-per-class規則。我對此並不滿意,因爲它混亂了我的目錄結構和命名空間。我可以將它們組織到子目錄和段名稱空間中,但我不太喜歡那樣,這不是標準庫通常這樣做的方式。
  • 將定義放在包含相關類的文件中。我不太喜歡這個,因爲那麼異常定義是分散的,如果沒有代碼導航工具的幫助可能很難找到。
  • 一個文件,包含名稱空間或相關類的「包」的所有異常定義。這是上述兩者之間的妥協,但它可能會導致很難說出哪些異常「屬於」一組特定類別或功能集合的情況。

我真的不喜歡上述任何一種,但是有沒有一種最佳實踐,我沒有拿起那會更好?

編輯:有趣。從「程序的Microsoft Visual C#2008:語言」,多尼斯表明:在單獨的程序

爲了方便和可維護性, 部署應用程序異常的 組。 (第426頁)

我想知道爲什麼?

+0

這種語言不可知論性如何? – ykaganovich 2008-09-26 02:56:53

回答

2

我用下面的方法:在一個單獨的文件

  • Exception類:當它是通用的,可以由多個類
  • Exception類一起與類把它扔拋出:當有隻有一個這樣的類。這是有道理的,因爲例外是該類別的一部分'接口

後者的變體使異常成爲拋出類的成員。我曾經這樣做,但發現它很麻煩。

4

我傾向於將每個文件的例外一個放在與生成它們的對象相同的包中,放在單個文件中。這是Java API和.Net庫使用的範例,因此大多數人至少熟悉當時對象的組織結構。

現代IDE在跟蹤目錄中的文件方面做得非常好,因爲使用具有相同名稱的文件中的類的好處超出了擁有較少文件的價值。

3

在C++中,我一直定義的類將在同一個命名空間中用作與拋出它們的類相同的名稱空間,並將它們放置在同一個標​​頭中。對於通用的異常,將在類之間共享,我使用單個頭將它們與其他實用程序函數和類一起分組在一起。

我不認爲在這方面有任何正確的做事方式;無論您的情況如何,它都適合您。