在Java中格式化一长串嵌套方法调用

时间:2017-02-13 22:11:58

标签: java android

我不确定如何分解这长长的代码(通过条件和切换阻塞进一步缩进):

titleText.setText(cursor.getString(cursor.getColumnIndex(MovieContract.TrailerEntry.COLUMN_NAME)));

我的理解是,在每个方法参数的最外层方法调用最内层参数方法调用之后,该行应该被8个空格缩进分解,直到下一行适合:

titleText.setText(cursor
        .getString(cursor.getColumnIndex(MovieContract.TrailerEntry.COLUMN_NAME)));

但是根据这篇文章Formatting multiple arguments passed to a function in Java,上述方法只是一个默认值,并且适当的空间量是在你与上一行的第一个参数一致之前

titleText.setText(cursor
                 .getString(cursor
                           .getColumnIndex(MovieContract
                                          .TrailerEntry
                                          .COLUMN_NAME)));

然而,我觉得我从未在生产代码中看到过这种情况。或者我应该只使用临时变量将这一行划分为多个java语句?

修改 感谢shmosel指出上面的链接不应该被用来引用问题,因为逻辑是不相关的。

1 个答案:

答案 0 :(得分:0)

如果我不得不筑巢,我会这样做:

titleText.setText(
        cursor.getString(
                cursor.getColumnIndex(
                        MovieContract.TrailerEntry.COLUMN_NAME)));

然而,这会变得非常快。理想情况下,您希望避免大量嵌套并使用临时变量拆分语句。它使您的代码更清晰,更明确:

int columnIndex = cursor.getColumnIndex(
        MovieContract.TrailerEntry.COLUMN_NAME);
titleText.setText(cursor.getString(columnIndex));

当然,有各种方法可以制定上述方法。在一天结束时,这都是品味问题,更重要的是会议。如果您正在寻找具体的指南,请考虑使用Google的Java Style GuideThe Elements of Java Style