在代码的中间层声明一个局部变量好吗?

Is it good to declare a local variable in the middle level of your code?

在阅读本书时 "clean code" 我遇到了以下说明:

"局部变量 应该在它们的第一次使用之上声明,并且应该有一个小的垂直范围。我们 不希望局部变量在距离它们的用法有数百行的地方声明。"

参见以下示例:

 public class A {

    public static void main(String[] args)  {

        String name = "Robert";
        String country = "iiiii";
        int age = 21;
        String hobby = "Soccer";
        System.out.println("my name is "+name+"I'm "+age+" and I'm from "+country);
        /*

             * 
             * a lot of code here
             * 
             * */
            System.out.println("my hobby is: " + hobby);

        }
    }

这里的变量 hobby 是它的用法中的一块石头,所以我想确定它是否像下面的代码那样编写是干净的?,因为我经常看到在函数顶层声明的局部变量:

/*the previous code here*/
String hobby = "Soccer";
System.out.println("my hobby is: " + hobby);

实际上建议在尽可能小的范围内声明变量。所以在你使用它的地方声明它。 它只会让你的代码有点混乱。

当我们谈论局部变量时,书上所说的一般规则是正确的。

关键是,如果将变量的声明和用法放在一起,代码往往更具可读性。如果它们相距很远,您可能会发现自己要向后扫描很多行才能找到声明。这会打扰你的注意力。

(现代 IDE 有巧妙的方法来向您显示变量的类型或转到它的声明。但是,如果您可以在同一 "page" 上看到声明和用法,这仍然会更容易。)

话虽如此,这在某种程度上是个人喜好问题。有些人喜欢"declare variables at the top",因为一些老派的编程语言不允许声明和其他语句穿插。