许多编辑器和 IDE 都有代码完成功能。他们中的一些人非常“聪明”,另一些人并不真正聪明。我对更聪明的类型感兴趣。例如,我见过的 IDE 只提供一个函数,如果它是 a)在当前作用域中可用 b)它的返回值是有效的。(例如,在“5 + foo [ tab ]”之后,它只提供返回可以添加到正确类型的整数或变量名的函数。)我还看到,他们把更经常使用或最长的选项放在列表的前面。
我知道你需要解析代码。但是通常当编辑当前代码是无效的时候,其中存在语法错误。当某些内容不完整且包含错误时,如何解析它们?
还有一个时间限制。如果需要几秒钟才能得到一个列表,那么完成是无用的。有时,完成算法处理成千上万个类。
什么是好的算法和数据结构?