我喜欢在我的日常工作中使用intellij的想法,但是因为我进入了像流和构建器这样的新java东西,所以有一件事让我烦恼。
当我将java代码样式设置“Chained method calls”设置为“Chop down if long”时,我的构造函数:
public Blog(Blog c) {
this(c.getId(), c.getFromId(), c.getSiteId(), c.getUserId(), c.getTitle(), c.getFolder(), c.getAddedDate(), c.getFrontPos(), c.isUseSiteWidgets(), c
.isNeedValidSubscriptionToView(), c.isMayStudentPostComments(), c.getLastIndexDate(), c.isCommentsEnabled(), c.isOverrideSiteSettings(), c
.isNotifyOnComment(), c.isOnlyNotiftyOnUnapprovedComment());
}
变为:
public Blog(Blog c) {
this(c.getId(), c.getFromId(), c.getSiteId(), c.getUserId(), c.getTitle(), c.getFolder(), c.getAddedDate(), c.getFrontPos(), c.isUseSiteWidgets(), c
.isNeedValidSubscriptionToView(), c
.isMayStudentPostComments(), c.getLastIndexDate(), c.isCommentsEnabled(), c.isOverrideSiteSettings(), c.isNotifyOnComment(), c
.isOnlyNotiftyOnUnapprovedComment());
}
当我将“Chained方法调用”设置为“Do not wrap”时,我的构建器方法调用变得非常混乱。从:
getWizard().sendCommandToServer(CommandProtos.Wrapper.newBuilder()
.setGetTutorSites(CommandProtos.GetTutorSites.newBuilder()
.setEmail(loginUserForm.getEmail().getText())
.setPass(new String(loginUserForm.getPass().getPassword()))
.build())
.build());
到一个班轮:
getWizard().sendCommandToServer(CommandProtos.Wrapper.newBuilder().setGetTutorSites(CommandProtos.GetTutorSites.newBuilder().setEmail(loginUserForm
.getEmail().getText()).setPass(new String(loginUserForm.getPass().getPassword())).build()).build());
是否有可能从两个世界中获得最佳效果?换句话说,正确格式化的函数/构造函数具有许多参数和正确格式化的构建器。
答案 0 :(得分:0)
我刚刚尝试了新的想法2018.4,似乎将“链式方法调用”设置为“总是包装”并禁用“包装第一次调用”和“多行时对齐”是解决方案。
现在链和长构造函数格式正确。希望这可以帮助有类似问题的人。
<强> [编辑] 强> 上面的确很有效,直到你发现自己在调用类似的东西:
myclass.myfunc().myfunc()
这在使用swing时似乎很常见。以上设置导致:
myclass.myfunc()
.myfunc()
“链接方法调用”以“砍掉if if long”并禁用“wrap first call”和“align when multiline”并将“方法调用参数”设置为“wrap if long”(长构造函数需要)工作
每个模块的代码样式可能会解决很多这些问题,但它不在intellij中,但您可以投票: https://youtrack.jetbrains.com/issue/IDEA-69685