2012-05-16 20 views
1

該類的優點是它可以自動篩選賦值/構造上的壞字符串。這也使得它你可以確定你正在處理一個文件名,而不僅僅是一個字符串,它是被支持的來表示一個文件名。哪個更好:表示文件名或FileName類的字符串?

該課程的問題在於,限制在哪裏?我們最終會創造一大堆不必要的課程嗎?例如,一些字符串應該只在x和y字符之間。我應該爲這些人上課嗎?

怎麼樣的URL類?或只有大寫字符串的類?一個人在哪裏畫線?

謝謝。

回答

0

嘗試用對象而不是簡單的字符串來思考。字符串代表什麼?如果它代表的不僅僅是一個單詞或短語,而不是一個類,這可能是合理的。

而不是定義一個FileName類我會定義一個File類來表示實際的文件。 FileName只是該類的一個屬性(然後可以將文件名驗證放入該類中)。它還將爲您提供機會來構建有用的相關屬性和方法,如Open(),Write(),Close(),Read(),PathName等。

類似地,Url類是有意義的,其他細節你可能想要從字符串中提取。例如:主機名,端口,QueryString。通過使它成爲一個類,您可以將所有這些功能捆綁到一個位置。

+0

類似於url,文件名類允許支持獲取它的組件,如服務器(如果它不是本地的),路徑,名稱,完整路徑,文件類型等。不想把它放在一個文件類中,就是說,imo文件表示磁盤上存在的東西。文件名可能不作爲磁盤上的文件存在。另外,爲什麼不把它分解成它的組件?就像一個網頁有一個網址,它本身有一個主機名等。 – user420667

1

它取決於上下文。在大多數應用程序中,您不會因爲給出的原因而煩惱,並且還因爲您使用的API期望文件名是字符串(並且在檢查有效文件名方面是否有優勢?也許您會看到當您嘗試使用它時出現適當的錯誤,並且系統庫中的代碼將適應不同的平臺,您可能不知道或正在測試......)。然而,我可以想象一個專門的應用程序或庫,它可能很重要的是要知道目錄和文件之間的區別(類可以在類型級別標記區別),或者需要大量與文件相關的地方信息(該類將是一個收集此類信息的好地方)或對文件名進行某些操作時的高性能(該類可以通過緩存結果來幫助提高性能)等等等等。正是你在做什麼。你的系統只有大寫字符串是否至關重要?您正在使用的網絡庫中是否已有網址?上下文就是一切......

+0

我不完全確定你在說什麼關於檢查文件名的有效性。至少在C#中,有一種方法可以找出系統中的無效字符,因此如果要在不同的操作系統上運行,假設該操作系統將這些無效字符暴露給該語言,則很容易檢查。代碼本身是平臺無關的。我想我一直認爲把它放在一個類中通常會很好,這樣當你將它作爲參數傳遞時,你知道它代表一個有效的文件名,不管誰在操縱它。 – user420667

+0

好的,所以對於C#,那麼你會考慮到這一點。這就是我的意思*上下文*。 –