簡體   English   中英

代碼格式中的縮進與對齊

[英]Indentation vs alignment in code formatting

我正在閱讀這個帖子https://stackoverflow.com/questions/268538/tab-versus-space-indentation-in-c-sharp reagrding Tab與space indentation。 線索的道德導致“縮進的標簽,對齊的空間”。 你能用一些代碼示例解釋我縮進意味着什么,空格意味着什么代碼? 我只是在代碼的上下文中混淆了兩件事?

該線程的示例:

switch(foo)
{
   case bar:      Do1(); break;
   case foobar_2: Do2(); break;
}

關鍵字'case'是縮進的。 “bar:”和“foobar_2:”對齊左側。

您可以想象有一個框,其中相同的單詞可以左對齊或右對齊。 剩下:

switch(foo)
{
   case bar:      Do1(); break;
   case foobar_2: Do2(); break;
}

對:

switch(foo)
{
   case      bar: Do1(); break;
   case foobar_2: Do2(); break;
}

由於不同的標簽配置,如果使用標簽完成此類事情將變得混亂,空間是必須的。 但是,使用不同的選項卡寬度配置,縮進就像這樣:

switch(foo)
{
       case bar:      Do1(); break;
       case foobar_2: Do2(); break;
}

這更像是一個偏好的問題,因為它不會弄亂哪條線匹配什么。

Java代碼約定中 ,它建議始終使用空格。 這在每個編輯器中都顯示相同的縮進,並且比混合制表符/空格方法更簡單。

在這里你可以看到一個對齊的例子 - 條件被對齊為一個在另一個之下。 一般情況下,您無法通過標簽實現此目的,因為

a)如果標簽大小為2或4,則表示不能用標簽表示3個空格

b)即使計算機上的標簽大小為3並且您設法與標簽對齊,另一個人可能會有不同的標簽大小,並且對齊方式會中斷(條件不會是另一個。

對齊樣本

public class SwitchDemo {
    public static void main(String[] args) {

        int month = 8;
        String monthString;
        switch (month) {
            case 1:  monthString = "January";
                     break;
            case 2:  monthString = "February";
                     break;
            case 3:  monthString = "March";
                     break;
            case 4:  monthString = "April";
                     break;
            case 5:  monthString = "May";
                     break;
            case 6:  monthString = "June";
                     break;
            case 7:  monthString = "July";
                     break;
            case 8:  monthString = "August";
                     break;
            case 9:  monthString = "September";
                     break;
            case 10: monthString = "October";
                     break;
            case 11: monthString = "November";
                     break;
            case 12: monthString = "December";
                     break;
            default: monthString = "Invalid month";
                     break;
        }
        System.out.println(monthString);
    }
}

線上的縮進是使用制表符進行的。
switch-case語句中的對齊是用空格完成的。

ttttttttttttttttcase 9:ssmonthString = "September";
ttttttttttttttttttttttttsbreak;
ttttttttttttttttcase 10:smonthString = "October";
ttttttttttttttttttttttttsbreak;

tttt代表一個標簽
s代表一個空間

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM