Saya biasanya lebih suka menggunakan metode kecil, seperti yang direkomendasikan, antara lain, Bob Martin in Clean Code . Saya juga sudah cukup membaca tentang internal Objective-C untuk memiliki setidaknya beberapa ide tentang cara kerja pengiriman pesannya ( seri bbums sangat informatif tentang hal ini).
Meskipun demikian, menyangkut optimasi prematur, saya ingin tahu apakah semua pekerjaan yang dilakukan Objective-c dengan objc_msgSend adalah, secara praktis, cukup signifikan untuk pendekatan 'banyak metode kecil' agar tidak disarankan untuk proyek Objective-C.
Temuan empiris sangat disambut (mungkin saya akan membuat tes sendiri kapan-kapan). Pengalaman dari siapa pun yang telah menulis proyek objektif-c besar juga akan bagus.
Klarifikasi
Nada umum pertanyaan itu disengaja. Saya tidak bertanya tentang penyempurnaan kinerja aplikasi tertentu (itulah sebabnya saya bertanya di sini daripada pada SO), tetapi lebih banyak tentang apakah karakteristik bahasa Objective-C menghambat pendekatan desain tertentu. Saya telah mengamati bahwa banyak kode yang saya lihat dari Apple, dan pihak lain (pada github dll) cenderung ke metode besar (dan kelas), dan saya bertanya-tanya apakah ini bias yang telah merangkak masuk karena bahasa diri. Tentu saja saya mungkin telah membaca kode yang salah, atau mungkin faktor budaya daripada faktor teknis yang mengarah pada kecenderungan jika ada.
(Untuk apa nilainya, saya sedang menulis Objective-C, dan saya menggunakan metode kecil)
Permintaan lebih lanjut
Saya setuju dengan kedua jawaban yang telah diberikan. Satu hal lagi yang saya ingin adalah seseorang untuk mengarahkan saya ke open source (mudah-mudahan substansial) (atau terlihat) kode-objektif C yang menggunakan metode pendek yang bagus (dan kelas kecil). Saya belum melihat apa pun di Objective-C yang belum dibandingkan dengan (misalnya) sumber fitnesse .
Jawaban:
Saya tidak benar-benar tahu apakah overhead dapat diabaikan atau tidak. Tapi, saya lebih suka merancang sistem agar mudah dimengerti dan dipelihara dulu , dan itu biasanya berarti metode dan kelas yang kecil dan terfokus. Ini bahkan akan membantu dengan penyetelan kode selanjutnya juga (hanya karena kode lebih mudah dikelola). Juga, penting untuk membuat profil kode untuk menemukan kemacetan nyata, yang mungkin bahkan tidak terkait dengan overhead panggilan metode. Jika Anda melakukan operasi di luar proses (mis. Panggilan ke database, jaringan, sistem file), ini cenderung mendominasi runtime program.
Tapi, seperti biasa, jarak tempuh Anda mungkin berbeda ...
sumber
Sebagian besar kode tidak akan menjadi kinerja-kritis dalam aplikasi apa pun , jadi meskipun metode overhead signifikan dibandingkan dengan bahasa lain, pendekatan optimal masih akan memiliki banyak metode kecil di sebagian besar tempat dan hanya sebatas yang membuat profil. telah terbukti kritis terhadap kinerja.
Tentu saja, ada banyak orang yang tidak tahu cara mengoptimalkan dengan benar, dan beberapa dari mereka mungkin tahu tentang metode overhead dan terlibat dalam tindakan optimasi prematur global, tetapi saya tidak percaya bahwa grup cukup besar untuk memiliki dampak yang signifikan pada ekosistem Objective-C.
Metode dan kelas besar jauh lebih mungkin untuk menjadi karya kelompok besar orang-orang yang tidak tahu atau tidak peduli tentang profiler, metode overhead atau desain yang tepat, dan yang akan cenderung menghasilkan Balls of Mud dalam bahasa apa pun . Dan ya, beberapa dari orang-orang itu bekerja pada basis kode profil tinggi di perusahaan perangkat lunak utama.
sumber