Pytanie Jaki jest preferowany sposób wprowadzania wcięć w przełączniku? [Zamknięte]


Kiedy pisałem kolejną zmianę w Eclipse, po raz kolejny natrafiłem na raczej dziwne (przynajmniej dla mnie) domyślne wcięcie, które stosuje się do instrukcji "przełączania":

switch (i) {
case 1:
    ...
case n:
    ...
}

Preferuję inny sposób:

switch (i) {
    case 1:
        ...
    case n:
        ...
}

Który sposób jest bardziej czytelny i przyjemny dla oka? Wciąż nie jestem w stu procentach zdeterminowany, co jest dla mnie najlepsze, więc chciałbym trzymać się tego, co najlepsze dla innych ludzi, którzy przeczytają mój kod.

BTW, możesz zamknąć to pytanie, jeśli jest to zbyt subiektywne. :)


22


pochodzenie


Moje Eclipse domyślnie wcina go jako drugą drogę. Może błąd w formatowaniu kodu twojego Eclipse? - BalusC
Visual Studio domyślnie formatuje również w 2 sposób. - Naveen
@BalusC: Jedynie format "Eclipse 2.1 [wbudowany]" formatuje go z dodatkowym wcięciem. Zarówno "Eclipse [wbudowany]", jak i "Konwencje Java [wbudowane]" nie stosują wcięć dla instrukcji case (po prostu zaznaczono to w Eclipse 3.5). - Chris Lercher
Niemal każda instrukcja switcha w programie C, nad którym obecnie pracuję, wykorzystuje pierwszy przykład tutaj. Instynktownie je wciskam, ale potem pamiętam, że pierwszy format jest używany w 5000 innych plików :( - SSH This
Wydaje się to zbyt subiektywne. - Andy


Odpowiedzi:


Wolę też drugą drogę. Ale ważniejsze jest zostać zgodny w konkretnym zgłoszeniu i / lub w konkretnym zespole, niż w taki czy inny sposób.


15





Mam tendencję do wciskania wszystkich obiektów struktury kontrolnej w jedną (4-obszarową) kartę, jak na przykład:

switch (i) 
{
    case 1:
        ...
    case n:
        ...
}

Uważam, że przełącznik jest zewnętrzną strukturą kontrolną, a obudowa stanowi część ciała (nawet jeśli są one częścią struktury kontrolnej).

Chciałbym dalej wciskać tab dla każdego przypadku w następujący sposób:

switch (i) 
{
    case 1:
        do_something();
    case n:
        do_something_else();
}

Uważam, że jest to najbardziej czytelny format dla konstrukcji przełącznika.

Ponieważ jkohlhepp wspomniał o zgodności z konwencjami stylu kodowego projektu, nad którym pracujesz, jest najważniejsze, jeśli pracujesz nad projektem, który go nie ma, warto go rozwinąć.


8



+1 Ja również umieszczam klamrę otwierającą w nowej linii. - onedaywhen
uggg, otwarty nawias bloku powinien iść w tym samym wierszu, co definicja bloku. - Jay
-1 odkąd umieściłeś klamrę otwierającą na nowej linii (oczywiście nie odrzucam twojej odpowiedzi na prawdę, ale naprawdę tego nie lubię), ale +1 (tym razem tym razem) za to, jak wcinasz wszystko inne. - SlackOverflow


Według "oficjalne" konwencje Java Code, jest to pierwszy wariant (bez dodatkowego wcięcia dla przypadku).


8



Dobrze, że konwencje Oracle (lub w rzeczywistości Sun) są nadal archiwizowane, ale informacje zostały ostatnio zaktualizowane w 1999 r., Więc na razie nie są ważne. Google Przewodnik po stylu Java nie zaleca jednak wcięcia zawartości bloku - asgs


Pierwszym z nich jest standardowe wcięcie w obudowie przełącznika.

switch (i) {

case 1:
    .... // Here you can write more code in a row than using the second way
    break;
case n:
    ....
    break;
default:
    ....
    break;
}

Zwróć uwagę na nową wstawioną linię między przełącznikiem (i) a przypadkiem 1:


1





Jeśli wolisz drugi przypadek, to dla spójności powinieneś również wcięcie else część if komunikat:

if( test )
    do_something( );
    else
        do_something_else( );

Większość ludzi tego nie robi, a konwencja polega na utrzymywaniu gałęzi na tym samym poziomie, co instrukcja, dlatego Java preferuje pierwszy jako test zdania sprawy, a gałęzie kodu są spójne na poziomie niż konstrukt if / then / else.

Przerzuciłem między nimi również klapki, ale ostatecznie zakończyłem pierwszeństwo:

switch (i) {
case 1:
    ...
case n:
    ...
}

1



przepraszam, ale dlaczego tak else być wcięte dalej? jest na tym samym poziomie co if, natomiast case jest w środku switch. Google Przewodnik po stylu Java który w dzisiejszych czasach stał się standardem, zaleca wcięcie zawartości bloku Switch. - asgs


Używam drugiej drogi:

switch (i) {
    case 1:
        ...
    case n:
        ...
}

0





Pierwsza metoda ma sens logiczny (jak dla mnie), jednak ja też wolę drugą metodę. Myślę, że większość z nas jest uwarunkowana oczekiwaniem, że kod wewnątrz nawiasów będzie wcięty.


0