我正在改写这个问题,因为它要么太无趣,要么太难以理解。 :)
最初的问题是因为我正在进行从 Java 到 Groovy 的转换,但是这个例子在转换到任何高级语言(Ruby、Python、Groovy)时同样适用。
Java 很容易调试,因为代码行和相当细粒度的行为之间有明确的关系,例如使用 for 循环操作数组:
for ( int i=0; i < array1.size(); i++ )
{
if ( meetsSomeCriterion(array1.elementAt(i) )
{
array2.add( array1.elementAt(i) );
}
}
所以你可以在循环中的测试上设置一个断点,看看接下来会发生什么。 (我知道有更好的写法;这只是为了说明这一点。)
在像 Ruby 这样的语言中,惯用风格似乎更倾向于更高级别的单行代码,例如来自 http://rubyquiz.com/quiz113.html
quiz.to_s.reverse.scan(/(?:\d*\.)?\d{1,3}-?/).join(',').reverse
我想知道您是否可以建议任何有效的调试技术,例如,如果您更改了正则表达式……您是否仍会使用传统的调试器,并步入/跨过链式方法?或者有更好的方法吗?
谢谢!
最佳答案
如果我要调试您的示例,我要做的第一件事就是将其分解为多个步骤。我不在乎它是“pythonic”还是“ruby 方式”或“tclish”或其他什么,这样的代码很难调试。
这并不是说我不写那样的代码。调试完成后,有时可以将所有内容合并成一行,但我发现自己更倾向于可读性和可维护性,而不是编写简洁的代码。如果单行方法确实更具可读性,我会采用它,但如果不是,我不会。
关于python - 调试 Ruby/Python/Groovy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1205343/