我最近在一個項目中每個方法都包含一個返回代碼。例如:返回代碼在OOP
public Boolean LoadPageData(out int returnCode) { ... }
或
public String GetCustomerName(out int returnCode) { ... }
是用好的習慣,不好的做法,或只是個人喜好在OOP編程(具體ASP.Net)的情況下返回代碼?如果他們確實有一個地方在每個方法上都包含一個返回碼,那麼正確的用法是?
我最近在一個項目中每個方法都包含一個返回代碼。例如:返回代碼在OOP
public Boolean LoadPageData(out int returnCode) { ... }
或
public String GetCustomerName(out int returnCode) { ... }
是用好的習慣,不好的做法,或只是個人喜好在OOP編程(具體ASP.Net)的情況下返回代碼?如果他們確實有一個地方在每個方法上都包含一個返回碼,那麼正確的用法是?
通常,除常規返回值之外,還需要返回代碼是設計不良的標誌。
返回碼用於指示成功或不同程度的故障。在OOP中,如果方法完全返回,則方法成功。如果有任何不同程度的失敗,你應該拋出適當的例外。
我認爲在具有異常和異常處理的語言中,處理特殊場景的首選方法是使用該框架。如果你不是在討論特殊情況,我仍然會分享你的猶豫,認爲返回代碼是一個好主意......我想,你可以在類中封裝任何與返回代碼相關的語義信息。
在OOP中表示錯誤的首選方法是拋出異常。在沒有例外的情況下,返回碼在C中很常見。如果您希望獲取某些自定義參數,或者創建異常類型枚舉並將其傳遞給泛型異常類,請自行創建異常。這裏有很多靈活性,不要太複雜,只要做現在的工作。
這不是好習慣。例外情況是處理異常情況的首選方式。要求調用者在每次調用方法時指定一個輸出參數也是非常麻煩的。
使用XML comments來警告調用者拋出或可能未處理的異常。
您應該使用異常來指示發生錯誤而不是返回代碼。請參閱here for more.返回碼在異常之前使用。
同意,處理返回碼會導致比必要的更多的代碼。您已經需要處理底層代碼可能拋出的異常,爲什麼還要處理返回碼呢?如果你不需要處理它們,爲什麼要處理它們呢? – pseudocoder