Dokumen ini memberikan panduan gaya untuk file .proto
. Dengan mengikuti konvensi ini, Anda akan membuat definisi pesan buffering protokol dan kelas yang sesuai secara konsisten dan mudah dibaca.
Perlu diperhatikan bahwa gaya buffering protokol telah berkembang dari waktu ke waktu, sehingga Anda mungkin akan melihat file .proto
yang ditulis dalam berbagai konvensi atau gaya. Harap hormati gaya yang ada saat Anda memodifikasi file ini. Konsistensi adalah kuncinya. Namun, sebaiknya adopsi gaya terbaik saat ini saat Anda membuat file .proto
baru.
Pemformatan file standar
- Pertahankan panjang baris hingga 80 karakter.
- Gunakan indentasi 2 spasi.
- Memilih penggunaan tanda kutip ganda untuk string.
Struktur file
File harus diberi nama lower_snake_case.proto
Semua file harus diurutkan dengan cara berikut:
- Header lisensi (jika ada)
- Ringkasan file
- Sintaksis
- Paket
- Impor (diurutkan)
- Opsi file
- Semua yang lain
Paket
Nama paket harus dalam huruf kecil. Nama paket harus memiliki nama unik berdasarkan nama project, dan mungkin berdasarkan jalur file yang berisi definisi jenis buffering protokol.
Nama kolom dan pesan
Gunakan CamelCase (dengan huruf kapital awal) untuk nama pesan – misalnya, SongServerRequest
. Gunakan garis bawah_yang_dipisahkan untuk nama kolom (termasuk salah satu nama kolom dan ekstensi) – misalnya, song_name
.
message SongServerRequest { optional string song_name = 1; }
Menggunakan konvensi penamaan ini untuk nama kolom memberi Anda pengakses seperti berikut:
C++: const string& song_name() { ... } void set_song_name(const string& x) { ... } Java: public String getSongName() { ... } public Builder setSongName(String v) { ... }
Jika nama kolom berisi angka, angka tersebut harus muncul setelah huruf, bukan setelah garis bawah. Misalnya, gunakan song_name1
bukan song_name_1
Kolom berulang
Gunakan nama jamak untuk kolom berulang.
repeated string keys = 1; ... repeated MyMessage accounts = 17;
Enumerasi
Gunakan CamelCase (dengan huruf kapital awal) untuk nama jenis enum dan CAPITALS_WITH_underscoreS untuk nama nilai:
enum FooBar { FOO_BAR_UNSPECIFIED = 0; FOO_BAR_FIRST_VALUE = 1; FOO_BAR_SECOND_VALUE = 2; }
Setiap nilai enum harus diakhiri dengan titik koma, bukan koma. Memilih untuk memberikan awalan pada nilai enum, bukan mengelilinginya dalam pesan penutup. Enum nilai nol
harus memiliki akhiran UNSPECIFIED
, karena server atau aplikasi yang mendapatkan
nilai enum yang tidak terduga akan menandai kolom sebagai tidak ditetapkan di instance proto. Aksesor kolom kemudian akan menampilkan nilai default, yang untuk kolom enum adalah nilai enum pertama.
Services (Layanan)
Jika .proto
menentukan layanan RPC, Anda harus menggunakan CamelCase (dengan huruf kapital awal) untuk nama layanan dan nama metode RPC:
service FooService { rpc GetSomething(GetSomethingRequest) returns (GetSomethingResponse); rpc ListSomething(ListSomethingRequest) returns (ListSomethingResponse); }
Hal yang perlu dihindari
- Kolom wajib diisi (hanya untuk proto2)
- Grup (hanya untuk proto2)