我正在使用带有自定义函数接口的 lambda 函数来缩短代码中经常出现的一些嵌套循环。因为我不想在我的表达式中添加额外的参数,并在我的代码中以这样的东西结尾:
doubleLoop((int i, int j, Graphics graphics) -> drawHexagonRandomColor(i, j, graphics), g);
我可以调用getGraphics()
来获取@Override public void paint(Graphics g) {...}
中的图形上下文(而不是使用参数g
)而不会产生意外/负面副作用吗?
我可以在我的@Override公共空洞油漆(Graphics g) {...}中调用getGraphics()而不会产生意外/负面的副作用吗?
有什么意义?paint
已经提到了Graphics
.
当其他人想要使用您的代码时会发生什么? 他们会知道不要在油漆例程的上下文之外调用这些方法吗?
有后果吗? 不是你打算使用它的方式,但是如果你想改用BufferedStrategy
而不是标准的绘画程序会发生什么? 如果要将结果绘制到BufferedImage
,会发生什么情况?
您已经构建了一个不灵活的解决方案,该解决方案具有自己的危险副作用。 为了保留好处(没有一个额外的参数),您将失去很多灵活性、重用和自我文档。
没有其他人会使用我的代码
这只是重点的一部分,你应该总是挑战自己,假设别人会使用你的代码,这会让你成为一个更好的开发人员,阻止你走捷径或偷工减料。
getGraphics
通常只是一个坏主意,应尽可能避免