这是在正常情况下确实不值得任何人花时间的问题之一,但是......
内置的 Android 日志框架对不同调试级别的日志消息使用不同的方法。所以你有一个android.util.Log.v
详细的方法,android.util.Log.e
用于错误,等等。
现在,我正在维护一个围绕此构建的包装类,并且基本上分别实现每个方法和每个签名。
包装器终于派上用场了,因为每次调用日志时都需要添加某些功能。然而,这意味着现在需要为每个方法签名复制此功能!当然,编程的危险信号之一是当您发现自己在多种方法上剪切粘贴代码块时。
通常,这可以通过使用将日志记录级别作为参数的通用方法、在方法主体内切换不同android.util.Log
调用以及在单个位置实现任何“beforelog”和“afterlog”功能来解决。
然而,在我看来,日志记录非常微妙,因为它会影响整个应用程序的性能,这是一个需要高性能的应用程序,即使在最糟糕的手机上也是如此。在我看来,为每个调用在不同的日志级别之间切换似乎会导致显着的性能下降......或者会这样吗?考虑到无论如何都要执行昂贵的日志调用。
我的问题是:
如果切换会使事情更易于维护但性能更低
并且 cut n paste 会使事情变得更快但更丑陋且更容易出错
确实有一个优雅的解决方案可以同时满足这两个目的吗?