相关疑难解决方法(0)

我应该测试私有方法还是仅测试公共方法?

我读过这篇关于如何测试私有方法的帖子.我通常不测试它们,因为我一直认为只测试从对象外部调用的公共方法会更快.你测试私人方法吗?我应该经常测试吗?

language-agnostic testing unit-testing

329
推荐指数
16
解决办法
10万
查看次数

在log4j中,在记录改进性能之前检查isDebugEnabled吗?

我在我的应用程序中使用Log4J进行日志记录.以前我使用调试调用如:

选项1:

logger.debug("some debug text");
Run Code Online (Sandbox Code Playgroud)

但有些链接表明最好先检查一下isDebugEnabled(),例如:

选项2:

boolean debugEnabled = logger.isDebugEnabled();
if (debugEnabled) {
    logger.debug("some debug text");
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是" 选项2能否以任何方式提高性能? ".

因为在任何情况下Log4J框架都对debugEnabled进行相同的检查.对于选项2,如果我们在单个方法或类中使用多个调试语句可能是有益的,其中框架不需要isDebugEnabled()多次调用方法(在每次调用时); 在这种情况下,它只调用isDebugEnabled()一次方法,如果Log4J配置为调试级别,那么实际上它调用isDebugEnabled()方法两次:

  1. 如果为debugEnabled变量赋值,和
  2. 实际上是由logger.debug()方法调用的.

我不认为如果我们logger.debug()在方法或类中编写多个语句并debug()根据选项1 调用方法,那么与选项2相比,它是Log4J框架的开销.因为它isDebugEnabled()是一个非常小的方法(就代码而言),它可能是内联的好人选.

java logging log4j

192
推荐指数
7
解决办法
10万
查看次数

50
推荐指数
8
解决办法
4万
查看次数

如何说服人们评论他们的代码

说服别人评论他们的代码有什么好的理由?

我注意到许多程序员喜欢编写代码的速度,而没有评论而是为自己和其他人留下一些文档.当我试图说服他们时,我会听到一半被烘焙的东西,比如"方法/班级名称应该说它做什么"等等.你会怎么说他们改变主意?

如果您反对评论,请发表评论.对于试图说服人们评论代码的人来说,这应该是一种资源,而不是其他.:-)

其他相关问题是:评论代码,您是否评论您的代码以及您希望如何评论.

documentation comments

38
推荐指数
11
解决办法
3346
查看次数

什么代码指标说服您提供代码是"糟糕"?

每个文件的代码行,每个类的方法,圈复杂度等.开发人员抵制并解决大多数(如果不是全部的话)!有一篇很好的Joel文章(没时间找到它).

您建议使用哪些代码指标来自动识别"糟糕的代码"?

什么可以说服大多数(你不能说服我们所有人一些糟糕的指标!:O))开发人员认为这个代码是"废话".

只有可自动测量的指标才算重要!

language-agnostic automation metrics software-quality

23
推荐指数
9
解决办法
3924
查看次数

具有延迟评估的String.format

我需要类似于String.format(...)方法的东西,但是有懒惰的评估.

这个lazyFormat方法应该返回一些对象,其toString()方法将评估格式模式.

我怀疑有人已经这样做了.这可以在任何图书馆中找到吗?

我想替换它(logger是log4j实例):

if(logger.isDebugEnabled() ) {
   logger.debug(String.format("some texts %s with patterns %s", object1, object2));
}
Run Code Online (Sandbox Code Playgroud)

有了这个:

logger.debug(lazyFormat("some texts %s with patterns %s", object1, object2));
Run Code Online (Sandbox Code Playgroud)

只有在启用调试日志记录时,我才需要lazyFormat来格式化字符串.

java logging lazy-evaluation

22
推荐指数
4
解决办法
2万
查看次数

慢斯卡拉断言

我们最近一直在分析我们的代码,我们遇到了一些恼人的热点.他们是在形式

assert(a == b, a + " is not equal to " + b)
Run Code Online (Sandbox Code Playgroud)

因为其中一些断言可能在代码中被称为字符串concat开始加起来的次数很多.assert定义为:

def assert(assumption : Boolean, message : Any) = ....
Run Code Online (Sandbox Code Playgroud)

为什么不定义为:

def assert(assumption : Boolean, message : => Any) = ....
Run Code Online (Sandbox Code Playgroud)

这样它会懒洋洋地评估.鉴于它没有定义,是否有一种内联方式调用断言与一个懒惰评估的消息参数?

谢谢

performance profiling assert scala preconditions

12
推荐指数
2
解决办法
1519
查看次数

记录约定

您对log4j或类似库中的日志类别使用了哪些约定?通常您将类名称视为类别,但是您是否使用过其他系统?

日志级别怎么样?你使用什么级别,在哪种情况下?

更新:正如你们中的一些人回答的那样,没有"正确"的答案.我只是在寻找人们使用的不同惯例作为灵感来源.

java logging log4j

5
推荐指数
1
解决办法
2589
查看次数

在SpringFrame工作中登录的首选方法

我做了一些搜索,寻找有关如何使用Spring Framework进行日志记录的信息.

我们目前有一个除了system.out语句之外没有登录的应用程序(非常糟糕的方式).

我想做的是添加日志记录,但也希望能够在运行时控制日志记录,比如说JMX.

我们正在使用Rad 7.0/WebSphere 6.1

我很有兴趣找出实现这个目标的最佳方法(我想可能有几个).

更新:关于以下Spring AOP Logging的想法不错的理想与否.这是关于此处发布的有关日志记录的问题: 条件日志记录.这是改善了事情还是仅仅在伐木方面变得更加困难?

java logging spring

2
推荐指数
1
解决办法
1849
查看次数

是否可以以编程方式禁用log4j,以便调用一种方法和方法?

有庞大的网络应用程序.当用户与Web应用程序交互时,大多数函数只被调用一次,因此没有性能问题.我写了一个新的"从文件导入"方法,该方法从系统调用多次不同的方法.我不想修改其他人的方法也不想禁用log4j.从文件导入将很少使用,并被视为加载项,而不是主要功能.由于这个原因,我遇到了性能问题.在分析后,我发现log4j使用了近22%的时间.

是否可以以编程方式禁用log4j,以便调用一种方法和方法?

java profiling log4j

2
推荐指数
1
解决办法
3459
查看次数