看到像下面这样的方法签名时,我感到很不舒服:
public void foo(String theXml);
如果传递以 UTF-16 XML 声明开头的字符串,foo
fo 会是什么?
在我看来,XML 的类型应该是强 XML 类型,如 DOM 树或字节数组。因此,foo 应该重新声明为:
public void foo(Byte[] theXml);
通常,程序员在读取theXml
时会不必要地假设具有某种编码。通常只是希望文件库的默认值能猜对。
我怎样才能激励我的同事这样做?
不兼容的文档头编码声明的动机太弱了。 (使用强类型或字节数组会阻止对文档进行天真的解析/修改。)我已经多次看到由于此类错误导致编码中断的情况。
最佳答案
确保在您的测试套件中有一个测试,如果在字符串中错误地处理 XML,该测试将会失败。如果解释问题没有激励作用,那么展示问题的发生可能...
关于c# - Xml 文档不应该作为 String 传递,如何激励?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6343559/