我刚刚完成了一个六小时的调试会话以获得奇怪的UI效果,我发现我最喜欢的框架实现的一个名为"getVisibleRegion"的接口函数禁用了一些UI功能(显然忘了恢复它).
我已经向框架提交了一个错误,但是这让我想到了正确的设计:在什么条件下,对一个名称仅仅意味着计算/获取操作的操作产生任何副作用是合法的?
对于那些对实际细节感兴趣的人:我有一个关于我的插件不断破坏Eclipse代码折叠的错误的报告,以便折叠条消失,无法"展开"或看到折叠代码.我将其追溯到ITextViewer上对getVisibleRegion()的调用,该类型代表源代码查看器.现在,ITextViewer的文档确实声明"实施ITextViewerExtension5的观看者可能被迫改变显示的输入文档的分数,以便履行此合同".然而,实际的实现过于宽松,只是永久禁用投影(折叠),永远不会把它带回来.
我能想到的最大原因是缓存结果.