Sof*_*mur 9 debugging ocaml coding-style
我有一个关于编码实践的一般问题......
在调试时,在我的代码的某些时候,我需要一些代码来打印当前状态; 当我不调试时,我不想将代码保留在那里,因为它阻碍了其他代码的可见性......
很难将它们打包成一个函数,因为大多数时候,它涉及局部变量,我不想将所有内容作为参数传递...
那么你如何管理这种"打印/检查"代码呢?有什么好的做法吗?
我曾经有一个调试函数,只有在设置了一个标志时才打印最终的字符串.现在,我更喜欢添加if
语句:
我也曾经有过camlp4宏,它会if
从函数应用程序生成语句,但它只适用于使用camlp4的项目,我现在倾向于避免使用它.
请注意,通常,我不使用一个调试标志,而是使用许多调试标志,每个模块一个,然后是meta标签,它们将触发几个模块或正交方面的调试.它们作为标志列表放在哈希表中,我可以使用参数或环境变量来设置它们.
我经常使用一个调试函数,它只在调试标志设置为true时打印值:
let debug_flag = ref false
let debug fmt =
if !debug_flag then Printf.eprintf fmt
else Printf.ifprintf stderr fmt
Run Code Online (Sandbox Code Playgroud)