我只是在写一个寻找新行的程序,我正在考虑使用Environment.NewLine vs'\ n'。
语法上:Environment.NewLine是否比'\ n'更清晰?
便携性真正有多重要?
答案 0 :(得分:7)
取决于您在其他平台上运行程序的可能性不是吗?
任何提取平台特定语义/语法的内置API总是更好用,因为它提供了可移植性而没有太多复杂性开销,但使用轻松获得。
另一方面,编写便携式C可能会更复杂,需要更强大的业务案例。在处理诸如C#,Python,Java和其他内容时...使用提供的跨平台的烦恼的抽象,在许多情况下,它们是缩减的。
答案 1 :(得分:4)
如果程序是针对特定的已知目标受众/平台编写的,那么确实非常重要,并且您确定其范围不会超出范围。但这就是问题所在:通常你无法确定这些事情。你无法展望未来。
编写可移植代码通常并不比编写非便携式代码更难。因此,始终努力编写可移植代码。
答案 2 :(得分:2)
我会选择Environment.NewLine。这是因为,根据使用的语言,我们可以更改其定义。如果我们使用'\ n',每个编译器/语言都会有自己的理解和解释。
因此,最好选择Environmental.NewLine。
答案 3 :(得分:2)
拥有便携式代码是一种商机。假设您现在只销售Windows软件。然后,贵国政府决定不向微软支付许可费,并将所有政府机构迁移到Linux。如果您无法快速移植软件,则无法再将其出售给政府,而且这笔钱很大。
答案 4 :(得分:1)
Environment.NewLine运行良好,我过去经常使用它,但是,如果应用程序是一个Web应用程序,并且在渲染的html中插入Environment.NewLine,它将在浏览器中无效窗口,但它会影响您的源布局。
如果我没记错,Environment.NewLine还会在系统需要的时候添加一个回车符,其中\ n不会。
我忘了回答便携性问题。我总是让我的代码更容易移植,因为在咨询公司工作的人我不想重新开发代码所以通过使用Environment.NewLine(例如)我会减少我需要做的工作量,如果代码需要将来可以重复使用。
答案 5 :(得分:1)
除了可移植性之外,不会总是使用Environmental.NewLine(或者你的平台上的等价物),因为它更易于人类阅读?
“随机维护程序员”出现两年后,他们不理解\ n Environmental的细微差别.NewLine也更加防弹。
答案 6 :(得分:1)
由于它们具有不同的含义,您应该使用对您正在处理的数据正确的那个。
Environment.NewLine表示当前系统的换行组合。
像'\ n'或“\ r \ n”这样的字符/字符串文字表示特定的换行符组合,与当前系统无关。
如果数据是例如由系统中的常规文本编辑器生成的文本文件,则可以使用Environment.NewLine来匹配换行符。如果数据是某种数据格式,其中换行符被定义为特定的字符组合而不管它们使用的是什么系统,那么您将使用该特定的文字。
答案 7 :(得分:0)
对于那些东西...... \ n,换行符是ASCII集中的固定字符,因此可以移植到几乎任何东西。由您来决定您的代码在不同平台上可移植的重要性...... 要做出这个决定,请弄清楚您的代码被移植到另一个平台的可能性。然后考虑一下投资将使其现在可移植,而不是在时间到来时移植它。选择最便宜或最方便的那个......
答案 8 :(得分:0)
您的问题有两个方面:可移植性有多重要,以及如何以便携方式表示换行符。
正如其他人在我之前所说,对可移植性的需求是业务需求:您自己的私有命令行工具不需要是可移植的,而商业库可能更好。根据这一需求,您可以选择正在使用的平台。
您的解析器必须识别换行符。如果您正在使用Pytho,C ++,...解析器将总是识别'\ n'序列。如果您正在编写正则表达式,则'$'将被识别为行尾。
如果您的代码的读者熟悉'\ n',我会使用那个,因为它作为一个角色跳出来。如果你想强调“行尾”的含义,那就去做象征性的事情吧。
答案 9 :(得分:0)
除非您正在处理一些小项目,否则可移植性可能非常非常重要。即使您只为Windows编程,您可能希望您的程序在未来版本的Windows上运行。在Windows的新版本中有很多内容破裂,我看到的最常见的是复制保护,它依赖于某些模糊的未记录的Windows运行时内部结构。类似于类Unix操作系统,你希望该程序能够处理最新内核,这就是为什么你必须避免使用系统调用等等。问题是,如果您的程序对于操作系统或体系结构非常不可移植,那么它甚至可能不会成为未来的证据。嘿,这让我想起了Windows注册表/文件系统组织。