[英]Adapting methods which return true/false
適應向Java返回true / false的C樣式函數時的最佳實踐是什么?
這是說明問題所在的簡單方法。
public static boolean fileNameEndsWithExtension( String filename, String fileExtension) {
return filename.endsWith( fileExtension );
}
請注意,可能有一種更優雅的文件過濾方法(可以對此發表評論)。 無論如何,如果filename是一個null
值,則執行以下操作:
null
的情況和String
或文件名不以給定文件擴展名結尾的情況? null
值的包裝器類Boolean。 Exception
並強制程序員確保從未將null
值傳遞給該方法嗎? 如果filename為null,則應引發NullPointerException或IllegalArgumentException。 我讓你決定哪個最好。 有一個關於該問題的辯論: IllegalArgumentException或NullPointerException是否為null參數?
您可以在特定應用程序的問題域中執行有意義的操作:
在大多數情況下,選項3會很明智,但是這里沒有人可以排除其他選項對您的應用程序的適用性。 如果您出於充分的原因傳遞了很多有意義的空文件名,則選擇其他文件名可能很有意義。
我將使用1或3。最好是拋出NullPointerExceptions或至少使用assert 。
返回可為空的布爾值通常會帶來比其價值更大的麻煩,您需要檢查空值等。除了fileNameEndsWithExtension()
看起來像一個函數,只有當您知道自己具有有效的文件名時才會使用。
同樣不要忘記fileExtension
也可能為null。
如果filename為null,我將返回false,並且不理會null與其他任何不匹配值之間的區別。
如果空文件名是需要特別驗證和處理的獨特狀態,則應單獨進行驗證,最好在檢查endsWith()之前進行驗證,但仍將null檢查保留在endsWith()中,以防止不必要的運行時異常。
我之所以選擇null = false的行為,可能是由於關系數據庫的影響。 以下查詢將僅返回符合條件的行,其他所有內容(空和不匹配)將被忽略。
select * from filenames
where filename like '&fileExtension';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.