该类的优点是它可以在赋值/构造时自动过滤坏字符串。它也使你完全确定你正在处理文件名,而不仅仅是一个 SUPPOSED 表示文件名的字符串。
班级的问题是,限制在哪里?我们最终会创造出各种各样不必要的课程吗?例如,某些字符串应该只在x和y字符之间。我应该为那些人上课吗?
网址类怎么样?或者只有大写字符串的类?人们在哪里画线?
感谢。
答案 0 :(得分:1)
取决于具体情况。在大多数应用程序中,你不会因为你给出的原因而烦恼,也因为你正在使用的API期望文件名无论如何都是字符串(并且检查有效文件名是否有任何优势?也许你会看到当您尝试使用它时,一个合适的错误,并且系统库中的代码将适应不同的平台,您可能不知道或正在测试......)。
但是,我可以想象一个专门的应用程序或库,知道目录和文件之间的区别(类可以标记类型级别的区别),或者需要大量文件相关信息的位置可能很重要(该类将是一个收集此类的好地方)或对文件名执行某些操作时的高性能(该类可以通过缓存结果来帮助提高性能)等。
所以最好的设计将取决于你正在做什么。你的系统只有大写字符串是否至关重要?您使用的网络库中是否已有URL?语境就是一切...
答案 1 :(得分:0)
尝试用对象而不是简单的字符串来思考。字符串代表什么?如果它代表的不仅仅是一个单词或短语,而是一个类可能有意义。
我没有定义FileName类,而是定义了一个File类来表示实际的文件。 FileName只是该类的属性(您可以将文件名验证放在类中)。它还为您提供了构建有用的相关属性和方法的机会,如Open(),Write(),Close(),Read(),PathName等。
类似地,Urls的类是有意义的,因为您可能希望从字符串中提取其他详细信息。例如:Hostname,Port,QueryString。通过使它成为一个类,您可以在一个位置捆绑所有这些功能。