Konvensi penamaan untuk proyek sumber terbuka iOS / OSX

12

Tidak selalu tetapi sebagian besar waktu, Anda akan menemukan proyek sumber terbuka iOS atau Mac OS X dengan nama yang dimulai dengan huruf awal dari nama depan dan belakang penulis. Jika sebuah proyek akan ditulis oleh Nick Leblanc, proyek tersebut akan dibaca sebagai NLMyProject.

Contoh:

Dari mana datangnya? Apakah satu orang menulis dengan cara ini terlebih dahulu dan kemudian orang lain mengikuti?

Saya tidak dapat menemukan apa pun tentang itu, bahkan dalam Pedoman Apple . Apakah idiom itu ditulis di mana saja?

Stéphane Bruckert
sumber
1
Pertanyaan yang bagus, dan contoh sumber terbuka yang keren! ;-)
Leo Natan

Jawaban:

16

Objective C, seperti C, tidak memiliki ruang nama. Ini berarti bahwa jika seseorang telah mendefinisikan suatu fungsi fooatau kelas Bar, itu harus unik secara global dan Anda tidak dapat mendefinisikannya. Ini dapat menyebabkan banyak sakit kepala ketika Anda memiliki kode Anda dan kemudian menambahkan perpustakaan lain dan tiba-tiba hal-hal rusak di tempat-tempat aneh.

Ada adalah pedoman yang disajikan oleh Apple untuk ini di Pemrograman dengan Objective C: Konvensi bagian dari pengembang perpustakaan iOS:

Beberapa Nama Harus Unik di Seluruh Aplikasi Anda

Setiap kali Anda membuat tipe, simbol, atau pengidentifikasi baru, Anda harus terlebih dahulu mempertimbangkan ruang lingkup di mana nama harus unik. Terkadang ruang lingkup ini mungkin seluruh aplikasi, termasuk kerangka kerja yang terkait; terkadang cakupan dibatasi hanya untuk kelas yang menyertakan atau bahkan hanya satu blok kode.

Nama Kelas Harus Unik di Seluruh Aplikasi

Kelas Objective-C harus dinamai secara unik tidak hanya dalam kode yang Anda tulis dalam suatu proyek, tetapi juga di seluruh kerangka kerja atau bundel yang mungkin Anda sertakan. Sebagai contoh, Anda harus menghindari menggunakan nama kelas umum seperti ViewController atau TextParser karena mungkin kerangka kerja yang Anda sertakan dalam aplikasi Anda mungkin gagal mengikuti konvensi dan membuat kelas dengan nama yang sama.

Agar nama kelas tetap unik, konvensi ini menggunakan awalan di semua kelas. Anda akan memperhatikan bahwa nama kelas Cocoa dan Cocoa Touch biasanya dimulai dengan NS atau UI. Awalan dua huruf seperti ini disediakan oleh Apple untuk digunakan dalam kelas kerangka kerja. Saat Anda mempelajari lebih lanjut tentang Cocoa dan Cocoa Touch, Anda akan menemukan berbagai awalan lain yang terkait dengan kerangka kerja tertentu:

...

Kelas Anda sendiri harus menggunakan tiga awalan huruf. Ini mungkin terkait dengan kombinasi nama perusahaan Anda dan nama aplikasi Anda, atau bahkan komponen tertentu dalam aplikasi Anda. Sebagai contoh, jika perusahaan Anda disebut Whispering Oak, dan Anda mengembangkan game yang disebut Zebra Surprise, Anda dapat memilih WZS atau WOZ sebagai awalan kelas Anda.

Jadi, mereka perpustakaan yang Anda sebutkan jenis melanggar konvensi ini, tetapi mendapatkan inti dari masalah kurangnya namespace dalam Objective C.

Bacaan Lebih Lanjut
Namespacing oleh NSHipster
Apa cara terbaik untuk menyelesaikan tabrakan namespace Objective-C?
Bagaimana cara menggunakan ruang nama dalam kode objektif-iOS iOS?

Komunitas
sumber
Kedengarannya seperti Objective-C benar - benar membutuhkan ruang nama ...
Chris Cirefice
1
@ ChrisCirefice itu akan sangat bagus, tetapi hal yang perlu disadari adalah bahwa Objective C adalah lapisan tipis di atas C. Mencoba untuk memperkenalkan ruang nama ada kemungkinan lebih sulit daripada tampilannya tanpa merusak barang-barang. Menggali Mengapa Objective-C tidak memiliki ruang nama? Saya menemukan Pengembang Dentang - Menambahkan ruang nama ke Objective-C . Ingat, @digunakan karena tidak digunakan dalam C ... mencoba untuk menambahkan operator lain yang tidak merusak hal-hal lain itu menantang.
1
@ChrisCirefice Namespaces tidak menyelesaikan apa pun. Bentrokan awalan hanya menjadi bentrokan namespace.
Miles Rout
@MichaelT Objective C belum menjadi lapisan tipis di atas C untuk sementara waktu (Objective C 2.0). Sekarang Apple telah mengalihkan fokus ke Swift, yang mencakup lebih banyak fitur modern, seperti ruang nama, tetapi saat ini tidak memiliki fitur lain dari Objective C.
Leo Natan