Java 在Android Eclipse中编辑代码-如何最好地记录/折叠结尾}

Java 在Android Eclipse中编辑代码-如何最好地记录/折叠结尾},java,android,eclipse,Java,Android,Eclipse,我刚刚意识到在Eclipse中不能像{}那样折叠代码块。唯一可以崩溃的是方法 现在,如果一个方法不再适用于一个屏幕,则有时很难找到关闭}的对应方法 我知道Eclipse中的“expandselection To”,但如果只是想隐藏一个块,那么只能看到正在处理的其余块,那么这并不是最佳选择 例如,在这样的代码中:(EDIT:我用Eclipse Format命令格式化了示例代码,这样它至少看起来是OK的) 如果在某些代码中再也找不到匹配的右大括号,那么重构代码的时间就到了。第一个猜测是“提取方法”,

我刚刚意识到在Eclipse中不能像
{}
那样折叠代码块。唯一可以崩溃的是
方法

现在,如果一个方法不再适用于一个屏幕,则有时很难找到
关闭}
的对应方法

我知道Eclipse中的“expandselection To”,但如果只是想隐藏一个块,那么只能看到正在处理的其余块,那么这并不是最佳选择

例如,在这样的代码中:(EDIT:我用Eclipse Format命令格式化了示例代码,这样它至少看起来是OK的)


如果在某些代码中再也找不到匹配的右大括号,那么重构代码的时间就到了。第一个猜测是“提取方法”,用于提取构成逻辑单元的代码块

另外,我不知道它是否就在这一页上,但在示例代码中,大括号遍布整个页面,甚至没有正确对齐。这使得查找匹配的大括号变得更加困难,即使在短代码中也是如此

我通过删除巨大的代码块来更改代码的可读性的一种方法是:

替换

if (someCommonlyTrueCondition) {
  // many lines of code
} else {
  // handling the uncommon case: probably logging followed by a return or throwing an exception
}
为此:

if (!someCommonlyTrueCondition) {
  // handling the uncommon case: probably logging followed by a return or throwing an exception
}
// many lines of code
它不会显著减少代码行数,但会减少“主”代码块的缩进,并确保不常见条件(可能是错误,可能不是)的实际处理接近定义实际条件的表达式


总结:我不知道有什么好方法可以“记录”右大括号。在我看来,最好的方法是以一种您不需要记录它们的方式来构造代码,因为它们存在的原因在您的代码中显而易见。

建议您提取大的块,并将它们作为私有方法。这会使代码看起来更干净。 我知道这不能回答你的问题。这只是一条建议和一个良好的编程实践。

这就是我所遵循的

private void method1() {

    if (condition) {
        switch (...) {  
        case a: {
            try {
                ...
            } catch (Exception e) {
                ...;
               }

                        } /* case a */
            break; 

        case b: {
            try {
                ...
            } catch (Exception e) {
                ...;
               }

                        } /* case b */
            break;
                }  /* switch */

    ....
    }  
} else {    /* if (condition1) */
        ...
}  /* else */

} /* method1 */

说了这么多,总比用同一种方法做任何事情都好。

…首先,我最初展示的样本你肯定是对的,这就是为什么我现在编辑了样本,使其看起来不错。但我不能理解的是,当你说“构建代码…”时,尤其是指重构。在这里,我试图避免定义只在一个地方使用的lokal方法。这对一些人来说可能“看起来”不错,但我发现这种跳跃让人困惑。看看xCode崩溃的可能性,我们可以得到同样的“重构”效果,但我发现代码更容易遵循和维护——这只是我个人的观点。(不过,重构似乎是Eclipse/Android中的唯一方法)…ps您关于“if-then-else”的建议只在某些前提条件下有效,在这种情况下,您可能会跳出if。在这里,我完全同意你的观点,也这么做……没错,这种方法并不普遍适用。这其中普遍适用的子集是“尝试将较小的代码块放在第一位”(这并不总是有意义的,但当它有意义时,往往会提高可读性)…我也将对这一部分进行限定。我喜欢把更重要的代码放在第一位,如果较小的代码不止几行。。。(您可能会建议为它定义另一个本地私有方法…:)…这正是我在这些情况下所做的,但是使用//而不是/**/因为它只有一行。。。
private void method1() {

    if (condition) {
        switch (...) {  
        case a: {
            try {
                ...
            } catch (Exception e) {
                ...;
               }

                        } /* case a */
            break; 

        case b: {
            try {
                ...
            } catch (Exception e) {
                ...;
               }

                        } /* case b */
            break;
                }  /* switch */

    ....
    }  
} else {    /* if (condition1) */
        ...
}  /* else */

} /* method1 */