Aturan penamaan gaya kode
Dalam file .editorconfig, Anda dapat menentukan konvensi penamaan untuk elemen kode bahasa pemrograman .NET—seperti kelas, properti, dan metode—dan bagaimana pengkompilasi atau IDE harus menerapkan konvensi tersebut. Misalnya, Anda dapat menentukan bahwa anggota publik yang tidak dikapitalisasi harus diperlakukan sebagai kesalahan kompilator, atau bahwa jika bidang privat tidak dimulai dengan _
, peringatan build harus dikeluarkan.
Secara khusus, Anda dapat menentukan aturan penamaan, yang terdiri dari tiga bagian:
- Grup simbol tempat aturan berlaku, misalnya, anggota publik atau bidang privat.
- Gaya penamaan untuk dikaitkan dengan aturan, misalnya, bahwa nama harus dikapitalisasi atau dimulai dengan garis bawah.
- Tingkat keparahan pesan saat elemen kode yang disertakan dalam grup simbol tidak mengikuti gaya penamaan.
Sintaks umum
Untuk menentukan salah satu entitas di atas—aturan penamaan, grup simbol, atau gaya penamaan—atur satu atau beberapa properti menggunakan sintaks berikut:
<kind>.<entityName>.<propertyName> = <propertyValue>
Semua pengaturan properti untuk tertentu kind
dan entityName
membentuk definisi entitas tertentu.
Setiap properti hanya boleh diatur sekali, tetapi beberapa pengaturan memungkinkan beberapa nilai yang dipisahkan koma.
Urutan properti tidak penting.
<nilai jenis>
<jenis> menentukan jenis entitas mana yang sedang didefinisikan—aturan penamaan, grup simbol, atau gaya penamaan—dan harus salah satu dari yang berikut ini:
Untuk mengatur properti untuk | <Gunakan nilai jenis> | Contoh |
---|---|---|
Aturan penamaan | dotnet_naming_rule |
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion |
Grup simbol | dotnet_naming_symbols |
dotnet_naming_symbols.interface.applicable_kinds = interface |
Gaya penamaan | dotnet_naming_style |
dotnet_naming_style.pascal_case.capitalization = pascal_case |
<entityName>
<entityName> adalah nama deskriptif yang Anda pilih yang mengaitkan beberapa pengaturan properti ke dalam satu definisi. Misalnya, properti berikut menghasilkan dua definisi grup simbol, interface
dan types
, yang masing-masing memiliki dua properti yang diatur di atasnya.
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum, delegate
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
<propertyName> dan <propertyValue>
Setiap jenis entitas—aturan penamaan, grup simbol, atau gaya penamaan—memiliki properti yang didukung sendiri, seperti yang dijelaskan di bagian berikut.
Properti grup simbol
Anda dapat mengatur properti berikut untuk grup simbol, untuk membatasi simbol mana yang disertakan dalam grup. Untuk menentukan beberapa nilai untuk satu properti, pisahkan nilai dengan koma.
Properti | Deskripsi | Nilai yang diizinkan | Wajib |
---|---|---|---|
applicable_kinds |
Jenis simbol dalam grup 1 | * (gunakan nilai ini untuk menentukan semua simbol)namespace class struct interface enum property method field event delegate parameter type_parameter local local_function |
Ya |
applicable_accessibilities |
Tingkat aksesibilitas simbol dalam grup | * (gunakan nilai ini untuk menentukan semua tingkat aksesibilitas)public internal atau friend private protected protected_internal atau protected_friend private_protected local (untuk simbol yang ditentukan dalam metode) |
Ya |
required_modifiers |
Hanya cocokkan simbol dengan semua pengubah yang ditentukan 2 | abstract atau must_inherit async const readonly static atau shared 3 |
Tidak |
Catatan:
- Anggota Tuple saat ini tidak didukung di
applicable_kinds
. - Grup simbol cocok dengan semua pengubah di
required_modifiers
properti . Jika Anda menghilangkan properti ini, tidak ada pengubah tertentu yang diperlukan untuk kecocokan. Ini berarti pengubah simbol tidak berpengaruh pada apakah aturan ini diterapkan atau tidak. - Jika grup Anda memiliki
static
ataushared
direquired_modifiers
properti , grup juga akan menyertakanconst
simbol karena secarastatic
/Shared
implisit . Namun, jika Anda tidak inginstatic
aturan penamaan diterapkan keconst
simbol, Anda dapat membuat aturan penamaan baru dengan grupconst
simbol . Aturan baru akan diutamakan sesuai dengan urutan aturan. class
termasuk rekaman C#.
Properti gaya penamaan
Gaya penamaan menentukan konvensi yang ingin Anda tertibkan dengan aturan. Contohnya:
- Kapitalkan dengan
PascalCase
- Dimulai dengan
m_
- Diakhir dengan
_g
- Pisahkan kata dengan
__
Anda bisa mengatur properti berikut untuk gaya penamaan:
Properti | Deskripsi | Nilai yang diizinkan | Wajib |
---|---|---|---|
capitalization |
Gaya kapitalisasi untuk kata-kata dalam simbol | pascal_case camel_case first_word_upper all_upper all_lower |
Ya1 |
required_prefix |
Harus dimulai dengan karakter ini | Tidak | |
required_suffix |
Harus diakhir dengan karakter ini | Tidak | |
word_separator |
Kata-kata dalam simbol perlu dipisahkan dengan karakter ini | Tidak |
Catatan:
- Anda harus menentukan gaya kapitalisasi sebagai bagian dari gaya penamaan Anda, jika tidak, gaya penamaan Anda mungkin diabaikan.
Properti aturan penamaan
Semua properti aturan penamaan diperlukan agar aturan berlaku.
Properti | Deskripsi |
---|---|
symbols |
Nama grup simbol yang ditentukan di tempat lain; aturan penamaan akan diterapkan ke simbol dalam grup ini |
style |
Nama gaya penamaan yang harus dikaitkan dengan aturan ini; gaya didefinisikan di tempat lain |
severity |
Mengatur tingkat keparahan untuk menerapkan aturan penamaan. Atur nilai terkait ke salah satu tingkat keparahan yang tersedia.1 |
Catatan:
- Spesifikasi tingkat keparahan dalam aturan penamaan hanya dihormati di dalam ID pengembangan, seperti Visual Studio. Pengaturan ini tidak dipahami oleh pengkompilasi C# atau VB, sehingga tidak dihormati selama build. Untuk menerapkan aturan gaya penamaan pada build, Anda harus mengatur tingkat keparahan dengan menggunakan konfigurasi tingkat keparahan aturan kode. Untuk informasi lebih lanjut, lihat masalah GitHub ini.
Urutan aturan
Urutan di mana aturan penamaan didefinisikan dalam file EditorConfig tidak masalah. Aturan penamaan secara otomatis diurutkan sesuai dengan definisi aturan itu sendiri. Aturan yang lebih spesifik mengenai aksesibilitas, pengubah, dan simbol lebih diutamakan daripada aturan yang kurang spesifik. Jika ada tumpang tindih antara aturan atau jika pengurutan aturan menyebabkan masalah, Anda dapat memecah persimpangan kedua aturan menjadi aturan baru yang lebih diutamakan daripada aturan yang lebih luas dari mana aturan tersebut diturunkan. Misalnya, lihat Contoh: Strategi penamaan tumpang tindih dan Contoh: const
pengubah menyertakan static
dan readonly
.
Ekstensi EditorConfig Language Service dapat menganalisis file EditorConfig dan kasus laporan di mana urutan aturan dalam file berbeda dengan apa yang akan digunakan pengkompilasi pada waktu proses.
Catatan
Jika Anda menggunakan versi Visual Studio yang lebih lama dari Visual Studio 2019, aturan penamaan harus diurutkan dari yang paling spesifik hingga paling tidak spesifik dalam file EditorConfig. Aturan pertama yang ditemui yang dapat diterapkan adalah satu-satunya aturan yang diterapkan. Namun, jika ada beberapa properti aturan dengan nama yang sama, properti yang terakhir ditemukan dengan nama tersebut lebih diutamakan. Untuk informasi selengkapnya, lihat Hierarki dan prioritas file.
Contoh: Strategi penamaan yang tumpang tindih
Pertimbangkan dua aturan penamaan berikut:
- Metode publik adalah PascalCase.
- Metode asinkron diakhapi dengan
"Async"
.
Untuk public async
metode, tidak jelas aturan mana yang diutamakan. Anda dapat membuat aturan baru untuk public async
metode dan menentukan penamaan dengan tepat.
Contoh: const
pengubah mencakup static
dan readonly
Pertimbangkan dua aturan penamaan berikut:
- Bidang konstanta adalah PascalCase.
- Bidang non-publik
static
s_camelCase.
Aturan 2 lebih spesifik dan diutamakan, sehingga semua bidang konstanta non-publik s_camelCase. Untuk mengatasi masalah ini, Anda dapat menentukan aturan persimpangan: bidang konstanta non-publik adalah PascalCase.
Gaya penamaan default
Jika Anda tidak menentukan aturan penamaan kustom apa pun, gaya default berikut digunakan:
Untuk kelas, struktur, enumerasi, properti, metode, dan peristiwa dengan aksesibilitas apa pun, gaya penamaan default adalah kasus Pascal.
Untuk antarmuka dengan aksesibilitas apa pun, gaya penamaan default adalah kasus Pascal dengan awalan I yang diperlukan.
ID Aturan Kode: IDE1006 (Naming rule violation)
Semua opsi penamaan memiliki ID IDE1006
aturan dan judul Naming rule violation
. Anda dapat mengonfigurasi tingkat keparahan pelanggaran penamaan secara global dalam file EditorConfig dengan sintaks berikut:
dotnet_diagnostic.IDE1006.severity = <severity value>
Nilai tingkat keparahan harus warning
atau error
diberlakukan pada build. Untuk semua kemungkinan nilai tingkat keparahan, lihat tingkat keparahan.
Contoh: Kapitalisasi anggota publik
File .editorconfig berikut berisi konvensi penamaan yang menentukan bahwa properti publik, metode, bidang, peristiwa, dan delegasi yang ditandai readonly
harus dikapitalisasi. Konvensi penamaan ini menentukan beberapa jenis simbol untuk menerapkan aturan, menggunakan koma untuk memisahkan nilai.
[*.{cs,vb}]
# Defining the 'public_symbols' symbol group
dotnet_naming_symbols.public_symbols.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
dotnet_naming_symbols.public_symbols.required_modifiers = readonly
# Defining the 'first_word_upper_case_style' naming style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper
# Defining the 'public_members_must_be_capitalized' naming rule, by setting the
# symbol group to the 'public symbols' symbol group,
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
# setting the naming style to the 'first_word_upper_case_style' naming style,
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
# and setting the severity.
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
Contoh: Bidang instans privat dengan garis bawah
Cuplikan file .editorconfig ini memberlakukan bahwa bidang instans privat harus dimulai dengan _
; jika konvensi tersebut tidak diikuti, IDE akan memperlakukannya sebagai kesalahan kompilator. Bidang statis privat diabaikan.
Karena Anda hanya dapat menentukan grup simbol berdasarkan pengidentifikasi yang dimilikinya (misalnya, static
atau readonly
), dan bukan oleh pengidentifikasi yang tidak dimilikinya (misalnya, bidang instans karena tidak memiliki static
), Anda perlu menentukan dua aturan penamaan:
- Semua bidang privat—
static
atau tidak—harus memilikiunderscored
gaya penamaan yang diterapkan sebagai pengkompilasierror
. - Bidang privat dengan harus memiliki
underscored
gaya penamaan yang diterapkan padanya dengan tingkatnone
keparahan ; denganstatic
kata lain, abaikan kasus ini.
[*.{cs,vb}]
# Define the 'private_fields' symbol group:
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
# Define the 'private_static_fields' symbol group
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields.required_modifiers = static
# Define the 'underscored' naming style
dotnet_naming_style.underscored.capitalization = pascal_case
dotnet_naming_style.underscored.required_prefix = _
# Define the 'private_fields_underscored' naming rule
dotnet_naming_rule.private_fields_underscored.symbols = private_fields
dotnet_naming_rule.private_fields_underscored.style = underscored
dotnet_naming_rule.private_fields_underscored.severity = error
# Define the 'private_static_fields_none' naming rule
dotnet_naming_rule.private_static_fields_none.symbols = private_static_fields
dotnet_naming_rule.private_static_fields_none.style = underscored
dotnet_naming_rule.private_static_fields_none.severity = none
Contoh ini juga menunjukkan bahwa definisi entitas dapat digunakan kembali. Gaya underscored
penamaan digunakan oleh private_fields_underscored
aturan penamaan dan private_static_fields_none
.
Baca juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk