CATATAN: Situs ini tidak digunakan lagi. Situs akan dinonaktifkan setelah 31 Januari 2023, dan traffic akan dialihkan ke situs baru di https://protobuf.dev. Sementara itu, perubahan hanya akan dibuat untuk protobuf.dev.

Panduan Gaya

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.

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:

  1. Header lisensi (jika ada)
  2. Ringkasan file
  3. Sintaksis
  4. Paket
  5. Impor (diurutkan)
  6. Opsi file
  7. 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)