python - 调试 Ruby/Python/Groovy

标签 python ruby debugging groovy dynamic-languages

我正在改写这个问题,因为它要么太无趣,要么太难以理解。 :)

最初的问题是因为我正在进行从 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/

相关文章:

python - 年龄分布的 Numpy 梯形分布

ruby-on-rails - 在数据库中存储 Rails 3 路由

方法调用中的 Ruby 变量替换

debugging - 有没有办法在 Go 中获取源代码文件名和行号?

java - 禁用 JVM 调试的 JMap

python - 用正则表达式将字符串拆分为每个特殊字符

python - 按顺序从多个字符串中获取字符

ruby - 如何在某个类的祖先中检测我的匿名模块

debugging - ANTLRWorks 调试 - 不同颜色的含义?

python - 在 pandas 中按浮点列中的值选择行