【问题标题】:Is it possible to use braces {} just to subdivide Java code? [duplicate]是否可以使用大括号 {} 来细分 Java 代码? [复制]
【发布时间】:2015-12-05 17:34:31
【问题描述】:

我在使用 Swing 制作 GUI 方面非常缺乏经验,现在我想知道是否可以使用“{”和“}”来稍微细分我的代码,例如

[...]
JFrame f = new JFrame();
JPanel p = new JPanel();
{
   JLabel a = new JLabel("Hello");
   p.add(a);

   JLabel b = new JLabel("World!");
   p.add(b);
}
f.add(p);
[...]

我测试了它,但我认为它没有任何区别......我错了吗?

提前致谢

【问题讨论】:

    标签: java swing


    【解决方案1】:

    是的,有可能,您可以在任何可以使用单个语句的地方使用块。在该块内声明的变量仅在该块内有效。例如:

    void method() {
        String allThisCodeCanSeeMe;
    
        // ...
    
        {
            String onlyThisBlockCanSeeMe;
            // ...
        }
    
        {
            String onlyThisSecondBlockCanSeeMe;
            // ...
        }
    
        // ....
    }
    

    但是:通常,如果您发现自己想做这样的事情,这表明您需要将代码分解为更小的函数/方法,并让当前您的一种方法调用那些更小的部分:

    void method() {
        String thisMethodCanSeeMe;
    
        // ...
    
        this.aSmallerMethod();        // <== Can pass in `thisMethodCanSeeMe`
        this.anotherSmallerMethod();  // <== if needed
    
        // ...
    }
    
    private void aSmallerMethod() {
        String onlyThisMethodCanSeeMe;
        // ...
    }
    
    private void anotherSmallerMethod() {
        String onlyThisSecondSmallerMethodCanSeeMe;
        // ...
    }
    

    【讨论】:

    • But:..." 部分获得 100 票赞成。
    • @HovercraftFullOfEels:尽管有人告诉我(尴尬地),但我花了至少 15 年的专业工作来吸取教训。就我而言。应该将它粘贴到我的显示器上,我仍然发现自己失败了。
    • @T.J.Crowder 如果方法不能独立使用,我认为没有理由将它们拆分为更小的方法。所以在“它”上失败并不一定表明做错了什么。 GUI 初始化块自然通常会变得很大,将它们分成方法并不能真正提高可读性(而不是通过初始化程序代码屏幕工作,您现在有 两个 私有方法屏幕来维护 名称)。尽管 sometimes 的建议很恰当,但它并不是提高代码可读性的一揽子秘诀。
    • @Durandal:恐怕你是在面对相当多的研究,但对每个人来说都是如此。是的,有时名称令人难以置信的枯燥,但将事物分成离散的块仍然有帮助。
    • @Durandal 一个可能的(也是非常重要的)原因是可读性,其中顶级方法的行为现在被描述为更小的高级语句列表,而不是大量的低级语句。一言以蔽之:抽象。
    【解决方案2】:

    大括号的唯一区别是在这些大括号内声明的任何变量在它们之外都是不可见的。

    例如:

    JPanel p = new JPanel();
    {
       JLabel a = new JLabel("Hello");
       p.add(a);
    
       int b = 5;
    }
    
    b = 10; // Compiler error
    

    【讨论】:

      【解决方案3】:

      {} 是代码“块”,添加更多代码不会产生任何影响。缩进是使内容更具可读性的公认方式。您可以添加更多大括号,但您不符合我们大多数人编写 Java 的方式。

      【讨论】:

      • 正如其他人所写,您可以通过将符号放在大括号中来限制符号的范围,但这根本不是标准做法。
      猜你喜欢
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 2018-09-25
      • 2021-05-13
      • 1970-01-01
      • 2013-08-16
      • 2015-12-22
      • 1970-01-01
      相关资源
      最近更新 更多