File 为什么我应该使用人类可读的文件格式?

File 为什么我应该使用人类可读的文件格式?,file,encoding,formatting,binary,abstraction,File,Encoding,Formatting,Binary,Abstraction,为什么我应该使用人类可读的文件格式而不是二进制文件格式?有没有一种情况不是这样的 编辑: 在最初发布问题时,我确实对此进行了解释,但现在已经不那么相关了: 在回答时,我想让提问者参考一个标准,所以请回答为什么使用人类可读的文件格式是一个好主意。然后我找了一个,却找不到。这就是问题所在 开放格式--无二进制位杂耍 可读性:) 跨站台换乘 调试辅助工具 易于解析(并易于转换为任何格式) 重要的一点是:只需编写一次解析器,但要多次读取输出。这种情况有利于HRF的平衡。因为你是一个人,迟早你(或你的客

为什么我应该使用人类可读的文件格式而不是二进制文件格式?有没有一种情况不是这样的

编辑: 在最初发布问题时,我确实对此进行了解释,但现在已经不那么相关了:

在回答时,我想让提问者参考一个标准,所以请回答为什么使用人类可读的文件格式是一个好主意。然后我找了一个,却找不到。这就是问题所在
  • 开放格式--无二进制位杂耍
  • 可读性:)
  • 跨站台换乘
  • 调试辅助工具
  • 易于解析(并易于转换为任何格式)

  • 重要的一点是:只需编写一次解析器,但要多次读取输出。这种情况有利于HRF的平衡。

    因为你是一个人,迟早你(或你的客户之一)将能够读取数据


    如果速度有问题,我们只使用二进制格式。即使这样调试也很麻烦,所以我们添加了一个人类可读的等价物。

    嗯……因为人类可读的文件格式可以被人类读取?对我来说似乎是个很好的理由


    (好吧,对于配置文件,它们不可避免地会被人读取(和编辑!)。用于某种类型的持久存储的文件实际上不需要被人读取或编辑。)

    互操作性是标准参数,也就是说,对于不同系统的开发人员来说,人类可读的表单更容易处理,因此具有一些优势

    就我个人而言,我认为这是不正确的,二进制文件的性能优势应该战胜这一论点,特别是如果您发布了您的协议。然而,基于XML/HTTP的机器交互框架的普遍性意味着它更容易采用


    XML被过度使用。

    它们提供了使用原始工具以外的工具创建/编辑的可能性。其他人可以开发新的更好的工具,集成到第三方应用程序中成为可能。例如,想想二进制iCal文件——这种格式会成功吗

    除此之外:人类可读的文件提高了调试的能力,或者,对于精明的用户来说,至少可以找到错误的原因

    为什么要使用人类可读的文件 格式优先于二进制格式? 有过这样的情况吗 不是吗


    是的,如果压缩卷(zip、jpeg、mp3等)是人类可读的,那么它们就不是最理想的。这完全取决于具体情况

    可读格式的好处:

    • 您可以阅读它的“本机”格式
    • 您可以自己编写,例如用于单元测试,或者甚至用于实际内容,这取决于它的用途
    二进制格式可能带来的好处:

    • 更容易解析(就代码而言)
    • 更快地解析
    • 空间效率更高
    • 更易于控制(任何时候需要文本时,都可以确保它是UTF-8编码的,并带有长度前缀等)
    • 更容易有效地包含不透明的二进制数据(图像等,使用base64中的文本格式)
    不要忘记,您总是可以实现二进制格式,但也可以生成转换为可读格式的工具。这就是Protocol Buffers框架所做的——实际上很少有IME需要解析协议缓冲区的文本版本,但是能够将其写成文本非常方便


    编辑:为了防止这最终成为一个公认的答案,您还应该记住:人类可读的表单更适合于扩散。我怀疑设计一种适合于差分的二进制格式是可行的(并且可以生成人类可读的差分),但现有差分工具的开箱即用支持将更好地用于文本。

    一个主要原因是,如果有人需要读取数据,比如说,30年后,人类可读的格式可以计算出来。二进制要困难得多

    如果您的大型数据集本质上是二进制的(例如图像),那么它们显然只能以二进制形式存储。但即便如此,元数据也可以(而且应该!)为人类可读。

    二进制的优点:

    • 快速解析
    • 通常较小的数据
    • 易于编写的语法分析器
    人类可读性的优点:

    • 阅读时更容易理解-否“字段X设置为4 487,这意味着反应堆现在应该关闭”
    • 如果使用XML之类的东西,很容易编写一个工具来解析任何文件
    我不得不应付这两种类型。如果您正在发送数据,并且希望将其保持为小型二进制文件,那么这是很好的。如果你希望人们阅读它,那么人类可读性是好的

    人类可读性一般也有点自我记录。使用二进制代码很容易出错,而且很难发现错误。

    • 可编辑
    • 可读性(duh!)
    • 可打印
    • 已启用记事本和vi

    最重要的是,它们的功能可以从内容中删除(大多数情况下)

    通常,文件会成为您的人机界面的一部分,因此它们应该是人性化的(不仅仅是程序员)

    我想在大多数情况下可能不太好。我认为这些格式(如JSON和XML)的主要原因是由于web开发,以及在web上的普遍使用,在web上,您需要能够在用户端处理数据,而不必读取二进制文件。使用人类可读格式的一个好例子是任何非文本的东西,如图像、视频、音频。我注意到在web开发中使用的非二进制格式毫无意义,我感到内疚

    这只是一个简单的例子,人类可读的文档格式可能是更好的选择:

    用于在生产中部署应用程序的文档

    我们曾经有过释放n的机会