浏览代码
获得比VIM更好的编辑器。
我使用Komodo Edit。
我觉得我必须为记忆付出更多
好。思维是好的。我发现“学习”最终导致“记忆”。
不断地“ grep”并通读代码以识别接口。
这是典型的。如果您不记得它们了,那么它们太复杂了,不是吗?是时候简化了。
简单很难创建。但是,当您难以记住时,这就是不良设计的征兆。
我用grep。这个对我有用。我的Komodo编辑有很多不错的搜索。Notepad ++也是如此
识别我正在使用的对象的接口
Doc Strings和help()
函数起作用。我用它们。日常。
有效地重构...这在很大程度上取决于我的单元测试的质量。
那不是新闻。即使是静态语言,也总是如此。
用静态语言,我们经常会变得懒惰,假设只要可以编译,它确实很可能会工作。这显然是错误的,但是我们很懒。
我确定有解决这些问题的方法。
这些不是“问题”,不需要“解决方法”。
动态语言正是关于不知道您要操纵的对象的类型的。当您收到一个参数时,假定它定义了一个“ quack()”和“ feathers()”方法,但是您不知道文档在哪里(实际上,它们在多个实现中将有多个文档字符串)。
“不知道对象的类型”?真。当设计对象的客户时,我知道我设计的类型。
当我定义了由多个客户端使用的服务时,当我定义了quack()
和的必需接口时,“精确”类型是不相关的feathers()
。
最后,在遇到细微问题的极少数情况下,我拥有Read-Execute-Print-Loop和其他工具来确定“精确”类型。那就是我每天实际使用的东西。
>>> x = some_mystery_factory( some, args )
>>> type(x)
>>> dir(x)
展开对象的类型似乎并不困难(至少在Python中是如此)。动态语言必须具有REPL,这使得查看正在发生的事情非常容易。
您也不知道预期的参数顺序。IDE似乎很难在那里提供帮助。
那没有多大意义。 help()
作品。
而且我的IDE经常可以找到定义。并非总是如此-一些复杂的动态构造可以轻松隐藏基类。在这种情况下,我必须考虑一下对象的类以找到方法定义。当然,我正在编写代码,因此那里几乎没有(或没有)神秘之处。