我热衷于喝一些现代动态语言 koolaid,所以我相信 Michael Foord 的博客和播客上的所有内容,我买了他的书(并阅读了其中的一些内容),并添加了一个嵌入式 IPy 运行时到大约一年前现有的大型应用程序(尽管那是给别人的,我自己并没有真正使用它)。
现在我需要做一些相当简单的代码生成工作,我将在一些 .net 对象(自定义、C# 编写的对象)上调用一些方法、创建一些字符串、编写一些文件等。
尝试这个的经历让我觉得自己像一个小男孩,认为他是唯一能看到皇帝没有穿衣服的人。如果您使用的是 IronPython,我非常感谢您知道您如何处理它的以下方面:
- 代码编辑 - 您是否使用没有Intellisense的 .NET 框架?
- 重构——我知道大量的“重构”是关于解决与语言相关的繁忙工作,所以如果 Python 足够轻量级,那么我们就不需要它了,但是在我看来,重命名之类的东西对于迭代开发高质量代码是必不可少的,无论语言。
- 严重的启动时间——解释语言的优点之一是缺乏编译时间,从而导致快速的交互式开发。不幸的是,我可以编译一个 C# 应用程序并以比 IPy 启动速度更快的速度启动它。
- 交互式黑客 - IPy 控制台/repl 应该对此有好处,但我还没有找到一种很好的方法来获取您以交互方式到达的代码并将其保存到文件中 - 从控制台剪切和粘贴是相当的悲惨的。并且控制台似乎包含对您已导入的 .NET 程序集的引用,因此如果您也在处理 C# 内容,则必须退出它并重新启动它。在诸如 LinqPad 之类的东西中对 C# 进行黑客攻击似乎是一种更快、更简单的尝试方法(并且具有适当的 Intellisense)。你用控制台吗?
- 调试 - 这里有什么故事?我知道 IPy 团队中的某个人正在开发一个命令行爱好项目,但可以说我并没有立即被命令行调试器所吸引。我真的不需要来自小 Python 脚本的调试器,但如果我使用 IPy 进行脚本单元测试,例如,我会这样做。
- 单元测试 - 我可以看到动态语言可能对此非常有用,但是否有任何 IDE 测试运行程序集成(如 Resharper 等)。福特的书有一章关于这个,我承认我还没有正确阅读,但它似乎确实涉及从命令提示符驱动控制台模式测试运行器,这感觉是使用的一个巨大的退步像 TestDriven.net 或 Resharper 这样的集成测试运行器。
我真的很想相信这些东西,所以我仍然假设我错过了一些东西。我真的很想知道其他人是如何处理 IPy 的,特别是如果他们以一种不觉得我们刚刚失去 15 年的工具开发价值的方式来做这件事。
更新:(2010 年 7 月)这个问题看起来已经过时了,现在有两个官方IronPython 工具用于 VS和PyCharm,它们都显示出很大的希望,而当我写它时,它们都没有出现。感谢所有回答的人。对于那些对没有自动重构工具感到满意的人,我是否可以建议您永远不要使用具有良好自动重构功能的 IDE。拥有之后,您会想知道为什么您认为自己对 find-replace 感到满意,并且您再也不想在没有它的情况下工作。如果不出意外,即时重命名标识符而不必担心替换错误的文本的能力会改变您命名内容的整个方法。