Pytanie Wcięcie w ruchu: tabulatory lub spacje?


Czy istnieje gdzieś standardowy dokument konwencji kodowania Google Go, który określa, czy tabulatory lub spacje są preferowane do wcięcia w kodzie źródłowym Go? Jeśli nie, jaka jest bardziej (statystycznie) popularna opcja?

  1. Jakie jest oficjalne zalecenie? (Jeśli w ogóle)
  2. Jaki jest bardziej popularny wybór?

71
2017-09-30 12:48


pochodzenie


medium.com/@hoffa/... - Brad Werth


Odpowiedzi:


Oficjalna rekomendacja polega na formatowaniu kodu

go fmt

lub bezpośrednio za pomocą polecenia gofmt

gofmt -w .

Możesz przeczytać więcej na ten temat tutaj na blogu golang.org lub z Skuteczne idź dokument:

Wcięcie
   Używamy zakładek do wcięcia, a gofmt domyślnie je emituje. Używaj spacji tylko, jeśli musisz.


111
2017-09-30 12:49



OK, więc karty są. - Erik Allik
Tak, oficjalne zalecenia to zakładki do wcięcia. ty mogą użyj wcięcia przestrzeni, jak wskazuje @Intermernet, ale nie jest to zalecenie. - ANisus
@ErikAllik, w rzeczywistości oficjalna pozycja nie jest "używać kart", ale raczej "używać go fmt na swoim kodzie przed jego przesłaniem "(zauważ, że jest również gofmt). Próbuję strees, że Go to zrobiłem dobrze nie tylko poprzez deklarowanie polityki, ale poprzez przyjęcie narzędzia, które ją egzekwuje. Jest to rzadkość, więc spróbuj pokręcić się wokół tego pomysłu i przyjąć go fmt. Zauważ, że istnieją nawet automatyczne rozwiązania (na przykład oficjalna wtyczka Go dla Vima obsługuje :Fmt polecenie, IIRC). - kostix
Idealnie - lubię to podejście; w ten sposób nie ma argumentów opartych na kodowaniu; a potem być może, gdy zmieni się oficjalna polityka, go fmt zmiany i wszystko / większość kodu zostanie ostatecznie zaktualizowana; na przykład Python powinien mieć to samo z jego PEP8: python fmt lub python pep8! (lub w rzeczywistości co drugi język) - Erik Allik
@ErikAllik, gdybyś miał rację co do "żadnych argumentów dotyczących konwencji kodowania" ... ;-) - kostix


Według http://golang.org/src/cmd/gofmt/doc.go wartości domyślne to:

EDYTOWAĆ: Oryginalna odpowiedź na dole jest teraz niepoprawna. Prawidłowa sekcja połączonego pliku źródłowego (bieżący 25/07/2014) to:

Formaty Gofmt Programy Go.
  Używa zakładek (width = 8) dla wcięć i spacji dla wyrównania.

Oryginalna odpowiedź (przestarzałe):

Formatting control flags:
    -comments=true
        Print comments; if false, all comments are elided from the output.
    -tabs=true
        Indent with tabs; if false, spaces are used instead.
    -tabwidth=8
        Tab width in spaces.

14
2017-09-30 12:52



-tabs i -tabwidth są odszedł (i -comments nie jest już udokumentowany; nie przyjrzałem się dokładniej) - William
@ Billisphere Dzięki, zaktualizowałem odpowiedź z odpowiednią sekcją połączonego pliku. - Intermernet
Gdy używasz znaków tabulacji, nie ma czegoś takiego jak użycie określonej szerokości tabulatora, więc opcja (poprzednia) tabulacji nie ma żadnego efektu, a część "zaktualizowana" powinna zostać usunięta Szerokość tabulacji jest skonfigurowana w przeglądarce Ten błąd występuje również w połączonym źródle. - thomasrutter