【发布时间】:2023-03-11 16:49:01
【问题描述】:
我倾向于在我的代码中使用大量换行符来保持大部分内容在 80 个字符的行宽内。虽然有些人可能会觉得这完全没用,但我喜欢在垂直旋转的屏幕上编辑代码,并且在做差异时也喜欢这种狭窄的布局。不管偏好如何,这在生成 JavaDoc 时确实给了我一个意想不到的结果,更具体地说是方法签名。
假设我有以下内容:
public static
<C extends AcmeConstants,
B extends AcmeBundle<C>,
R extends AcmeBundleProvider<C, B>> //Type params
R //Return type
newInstance(final Class<R> spiClass, final String implementationClassName)
throws AcmeException {
return newInstance(spiClass,
implementationClassName,
Thread.currentThread().getContextClassLoader());
}
除了疯狂的类型参数,你可以看到我正在调整类型参数、返回类型、方法声明和 throws 子句,以使事情有些不同。同样,您可能会发现这很迷人或完全迟钝,但在生成 JavaDoc 时会出现问题。我得到的是文档,其中方法参数每个都在一个新行上并对齐,即使我没有这样做。不是一个真正的问题,虽然奇怪的是它把类型参数声明变成了一行。然而,真正的问题在于,它会将 throws 子句也放在新行上,并带有原始缩进!
看看我的意思:
public static <C extends AcmeConstants,B extends AcmeBundle<C>,R extends AcmeBundleProvider<C,B>> R newInstance(Class<R> spiClass,
String implementationClassName)
throws AcmeException
这与生成的 JavaDoc 中看起来完全一样。有没有办法让它停止这样做并规范化空白或其他东西?现在我必须在更改代码格式或使用奇怪的 JavaDoc 之间做出选择。
顺便说一下,我是用 Maven JavaDoc 插件生成的,但是使用不同的方法时结果是一样的。
【问题讨论】:
-
我相信您可以编辑 javadoc 创建的页面将使用的 css。这可能会给你一些你想要的东西。但老实说?我会不理它的。虽然它可能会打扰你,但它是一种事实上的标准。把你的强迫症放在一边,专注于完成真正的工作。 (我总是与自己斗争,所以我知道你来自哪里。)
-
@Marvo 哈哈,这是强迫症好吧 :D 可能花费太多时间格式化代码。至少我已经停止在多行异常抛出中分解字符串文字。关于CSS,恐怕在这里无济于事。生成的 HTML 使用了
PRE标记,该标记导致所有空白都完全按照文件中的内容显示。 -
是的,Javadoc 中长类型参数声明的处理并不是最佳的。不过,与您的源代码格式无关(正如jackrabbit所说)。
标签: java newline javadoc indentation code-formatting