Swift telah matang secara signifikan di tahun-tahun sejak jawaban ini ditulis. Pedoman desain sekarang menyatakan :
Protokol yang menggambarkan sesuatu harus dibaca sebagai kata benda (mis Collection
.).
Protokol yang menggambarkan kemampuan harus dinamai menggunakan akhiran able
, ible
atau ing
(misalnya Equatable
, ProgressReporting
).
Terima kasih kepada David James karena mengetahui ini!
Jawaban Asli
Menggunakan beberapa bentuk Notasi Hongaria dapat menjadi ide yang baik - untuk mewakili konsep penting yang tidak dapat dikodekan dalam sistem tipe. Namun, fakta bahwa beberapa pengenal mengacu pada protokol adalah bagian dari sistem tipe di Swift (dan C #), dan dengan demikian setiap awalan atau sufiks hanya menambah noise. Prefiks atau sufiks yang jelas adalah ide yang lebih baik untuk konsep seperti pengecualian atau peristiwa.
Dengan tidak adanya panduan gaya resmi untuk Swift, kita harus membuat sendiri, atau meminjam dari panduan atau kode yang ada. Misalnya, panduan gaya Objective-C untuk Kakao mengandung bagian ini:
Protokol harus dinamai sesuai dengan bagaimana mereka mengelompokkan perilaku:
Sebagian besar protokol terkait metode grup yang tidak terkait dengan kelas mana pun secara khusus. Jenis protokol ini harus dinamai sehingga protokol tidak akan bingung dengan kelas. Konvensi umum adalah menggunakan formulir gerund ("... ing"):
NSLocking
- Bagus
NSLock
- Miskin (sepertinya nama untuk kelas).
Beberapa protokol mengelompokkan sejumlah metode yang tidak terkait (daripada membuat beberapa protokol kecil yang terpisah). Protokol-protokol ini cenderung dikaitkan dengan kelas yang merupakan ekspresi utama dari protokol. Dalam kasus ini, konvensi adalah untuk memberi protokol nama yang sama dengan kelas.
Contoh dari protokol semacam ini adalah NSObject
protokol. Protokol ini mengelompokkan metode yang dapat Anda gunakan untuk menanyakan objek apa pun tentang posisinya di hierarki kelas, untuk membuatnya memohon metode tertentu, dan untuk menambah atau mengurangi jumlah referensi. Karena NSObject
kelas menyediakan ekspresi utama dari metode ini, protokol ini dinamai setelah kelas.
Namun, saran dari poin kedua tidak lagi berlaku:
Karena namespace kelas dan protokol disatukan dalam Swift, NSObject
protokol di Objective-C dipetakan kembali ke NSObjectProtocol
dalam Swift. ( sumber )
Di sini, …Protocol
suffix digunakan untuk mendambug protokol dari kelas.
The Swift Standard Library berisi protokol Equatable
, Comparable
dan Printable
. Ini tidak menggunakan bentuk “… ing” Kakao, tetapi sufiks “… mampu” untuk menyatakan bahwa instance apa pun dari jenis ini harus mendukung operasi tertentu.
Kesimpulan
Dalam beberapa kasus di mana protokol hanya memiliki satu implementasi yang relevan, sufiks "... Protokol" dapat masuk akal sehingga kelas dan protokol dapat memiliki nama yang sama. Namun, ini harus dibatasi hanya untuk kasus-kasus seperti itu.
Kalau tidak, namanya harus berupa kata benda yang mencerminkan operasi apa yang ada dalam protokol ini. Menggunakan bentuk "... ing" atau "... mampu" kata kerja bisa menjadi titik awal yang baik, dan nama-nama seperti itu tidak mungkin bertentangan dengan nama kelas.
Nama EquatableProtocol
ini tidak dianjurkan . Nama Equatable
atau Equating
akan jauh lebih baik, dan saya tidak berharap ada kelas yang memiliki nama Equatable
. Dalam hal ini, Protocol
sufiks adalah noise.