如何创建一个最小的可复现的实例
如何创建一个最小的可复现的实例
提问题时,如果你提供易于理解并且可以用于复现问题的代码,别人就可以更好地为你提供帮助。社区成员将其称为创建最小的、可重复的示例(reprex)、最小的、完整的和可验证的示例(mcve)或最小的、可操作的示例(mwe)。不论如何,确保你复现问题的代码遵循以下准则:
你的实例代码应该:
- 最小化:使用尽可能小的代码仍然会产生相同的问题
- 完整的:提供复现你的问题需要的所有部分
- 可复现:测试你提供的代码,以确保这些代码能够复现
这篇帮助文章的剩余部分就如何编写最小的、可复现的示例提供了指导。
最小化
代码越多,发现问题的可能性越小。用以下两种方法简化你的示例:
- 从头开始:创建一个新程序,仅添加查看问题所需的内容。对函数和变量使用简单的描述性名称-不要在现有代码中复制正在使用的名称。
- 分而治之:如果你不确定问题的根源是什么,请一次删除一点代码,直到问题消失为止–然后再添加最后一部分。
最小且可读
创建最小示例时,不要为了简洁牺牲代码的流畅性。使用一致的命名和缩进,并且添加必要的注释。使用代码编辑器的快捷键来格式化代码。使用空格而不是制表符(Tab
)
完整的
确保复现问题所需的全部信息都被提供:
- 如果问题需要一些服务器端代码以及一些基于XML的配置,请同时包含这两个代码。如果是网页问题需要HTML、JavaScript和样式表三者都提供代码。问题可能出在你认为它所在的代码中。
- 对您包括的每个文件或代码段使用单独的 代码块。针对每个块的目的提供描述。
- 请勿使用代码截图。从代码编辑器复制实际文本,将其粘贴到问题中,然后将其格式化为code。这可以帮助其他人更轻松地阅读和测试您的代码。
可复现
为了帮助你解决问题,其他人需要验证问题是否存在:
- 描述问题。“出错了;有问题;不起作用”等描述不足以让人理解你的问题。相反,告诉其他读者预期的行为是什么;确切的错误信息是什么;以及产生该错误消息的代码行。使用简短具有概括性的语句作为你的标题。
- 消除与该问题无关的所有问题。如果你的问题不是关于一个编译器错误,确保没有编译时错误。使用诸如JSLint之类的程序来验证解释性的语言。验证任何HTML或XML。
- 仔细检查你的示例是否重现了问题!如果你在编写示例时无意中解决了问题,但没有再次对其进行测试,则需要在寻求其他人帮助之前先知道这一点。
重启系统可能会有帮助,或将示例传输到新的环境中,以确认该示例确实有问题。