Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在日志包装器中切换是否有害?_Java_Android_Logging_Wrapper_Maintainability - Fatal编程技术网

Java 在日志包装器中切换是否有害?

Java 在日志包装器中切换是否有害?,java,android,logging,wrapper,maintainability,Java,Android,Logging,Wrapper,Maintainability,这是一个在正常情况下不值得任何人花费时间的问题,但是 内置的Android日志框架对不同调试级别的日志消息使用不同的方法。所以您有一个详细的方法android.util.Log.v,android.util.Log.e 对于错误,等等 现在,我正在维护一个包装器类,它是围绕这个类构建的,本质上是分别实现每个方法和每个签名 包装器终于派上了用场,因为每次调用日志时都需要添加某些功能。然而,这意味着现在需要为每个方法签名复制此功能!当然,编程的一个危险信号是当你发现自己在几个方法上剪切粘贴一块代码时

这是一个在正常情况下不值得任何人花费时间的问题,但是

内置的Android日志框架对不同调试级别的日志消息使用不同的方法。所以您有一个详细的方法
android.util.Log.v
android.util.Log.e
对于错误,等等

现在,我正在维护一个包装器类,它是围绕这个类构建的,本质上是分别实现每个方法和每个签名

包装器终于派上了用场,因为每次调用日志时都需要添加某些功能。然而,这意味着现在需要为每个方法签名复制此功能!当然,编程的一个危险信号是当你发现自己在几个方法上剪切粘贴一块代码时

通常,这可以通过使用一个通用方法来解决,该方法将日志记录级别作为一个参数,在方法体中切换不同的
android.util.Log
调用,并在单个位置实现任何“beforelog”和“afterlog”功能

然而,我突然想到,日志记录是非常微妙的,因为它会影响整个应用程序的性能,这是一个需要性能的应用程序,即使是在最糟糕的手机上。在我看来,在每个调用的不同日志级别之间切换似乎会带来显著的性能损失……或者会吗?考虑到无论如何都要执行昂贵的日志调用

我的问题是:

如果切换将使事情更易于维护,但性能更低

剪切n粘贴会使事情变得更快,但更难看,更容易出错


真的有一个优雅的解决方案可以同时满足这两个目的吗?

在我所能想到的几乎任何设备上,一个5或6个case switch语句都可以忽略不计of@clockpenalty将日志记录留在生产应用程序中不是一个好主意,所以我认为您不应该太担心代码的“低”性能,您只需在混淆过程中排除所有日志记录。