Saya memulai proyek baru dari awal dan ingin proyek itu bersih / memiliki standar pengkodean yang baik. Dalam urutan apa para pengembang berpengalaman di sini suka meletakkan berbagai hal di dalam kelas?
J: 1) metode publik 2) metode pribadi 3) vars publik 4) vars pribadi
B: 1) vars publik 2) vars pribadi 3) metode publik 4) metode pribadi
C: 1) vars publik 2) metode publik 3) metode privat 4) vars privat
Saya biasanya ingin meletakkan public static vars di bagian atas, tetapi kemudian akankah metode statis publik dicantumkan di depan konstruktor Anda, atau haruskah konstruktor selalu dicantumkan terlebih dahulu? Hal semacam itu ...
Saya tahu ini rewel tetapi saya hanya bertanya-tanya: apa praktik terbaik untuk ini?
PS: tidak, saya tidak menggunakan Cc #. Aku tahu. Saya seorang luddite.
sumber
Jawaban:
Dalam Clean Code , Robert C. Martin menyarankan pembuat kode untuk selalu menempatkan variabel anggota di bagian atas kelas (konstanta terlebih dahulu, kemudian anggota pribadi) dan metode harus diurutkan sedemikian rupa sehingga mereka membaca seperti cerita yang tidak menyebabkan pembaca harus terlalu banyak membaca kode. Ini adalah cara yang lebih masuk akal untuk mengatur kode daripada dengan pengubah akses.
sumber
Praktik terbaik adalah konsisten .
Secara pribadi, saya lebih suka menempatkan
public
metode terlebih dahulu, diikuti olehprotected
metode, diikuti olehprivate
metode. Anggota Data harus secara umum selalu pribadi atau dilindungi, kecuali Anda memiliki alasan yang baik untuk itu tidak begitu.Alasan saya untuk meletakkan
public
metode di atas adalah bahwa ia mendefinisikan antarmuka untuk kelas Anda, jadi siapa pun yang membaca file header Anda harus dapat melihat informasi ini segera.Secara umum,
private
danprotected
anggota kurang penting bagi kebanyakan orang yang melihat file header, kecuali mereka mempertimbangkan untuk mengubah internal kelas. Menjaga mereka "keluar dari jalan" memastikan informasi ini dipertahankan hanya atas dasar kebutuhan untuk mengetahui , salah satu aspek enkapsulasi yang lebih penting.sumber
Saya pikir saya memiliki filosofi yang berbeda tentang ini dari kebanyakan. Saya lebih suka mengelompokkan item terkait. Saya tidak tahan harus melompat-lompat untuk bekerja dengan kelas. Kode harus mengalir dan menggunakan urutan yang agak artifisial berdasarkan aksesibilitas (publik, pribadi, dilindungi, dll.) Atau contoh versus statis atau anggota versus properti versus fungsi tidak membantu menjaga alur tetap bagus. Jadi jika saya memiliki metode publik
Method
yang diimplementasikan oleh metode pembantu pribadiHelperMethodA
,HelperMethodB
dll. Maka daripada memiliki metode ini berjauhan satu sama lain dalam file, saya akan menyimpannya dekat satu sama lain. Demikian pula, jika saya memiliki metode contoh yang diimplementasikan dengan metode statis, saya akan mengelompokkan ini juga.Jadi kelas saya sering terlihat seperti ini:
sumber
Secara pribadi saya suka publik di atas, dilindungi, dan kemudian pribadi. Alasan untuk ini adalah ketika seseorang membuka header, dia melihat apa yang dapat dia akses terlebih dahulu, kemudian lebih detail saat dia menggulir ke bawah.
Seseorang tidak harus melihat detail implementasi kelas untuk menggunakannya, maka desain kelas tidak dilakukan dengan baik.
sumber
Saya dulu sangat peduli. Selama beberapa tahun terakhir menggunakan IDE modern hampir semuanya hanya berjarak 1 atau 2 penekanan tombol, saya telah membiarkan standar saya rileks secara substansial. Sekarang, saya mulai dengan statika, variabel anggota, lalu konstruktor setelah itu saya tidak terlalu mengkhawatirkannya.
Dalam C # saya biarkan Resharper mengatur sesuatu secara otomatis.
sumber
Ini akan menjadi pesanan saya
Saya menggunakan aturan berikut:
Idenya adalah Anda mendefinisikan objek (data), sebelum perilaku (metode). Statika perlu dipisahkan karena mereka sebenarnya bukan bagian dari objek, juga bukan perilaku.
sumber
Saya biasanya setuju dengan ketertiban umum, dilindungi, pribadi serta data statis, data anggota, urutan fungsi anggota.
Meskipun terkadang saya berkelompok seperti anggota (pengambil & penyetel), saya biasanya lebih suka mencantumkan anggota dalam grup SECARA ALFABETIS sehingga mereka dapat ditemukan dengan lebih mudah.
Saya juga suka menyusun data / fungsi secara vertikal. Saya tab / spasi di sebelah kanan sehingga semua nama disejajarkan dalam kolom yang sama.
sumber
Untuk masing-masing miliknya, dan seperti yang dikatakan Elzo, IDE modern telah mempermudah untuk menemukan anggota dan pengubah mereka dengan cara yang mudah dengan ikon berwarna di menu drop-down dan semacamnya.
Pandangan saya adalah bahwa lebih penting bagi programmer untuk mengetahui untuk apa kelas itu dirancang, dan bagaimana kelas itu diharapkan berperilaku.
Jadi, jika itu adalah Singleton, saya menempatkan semantik (kelas getInstance () statis) terlebih dahulu.
Jika ini adalah pabrik beton, saya meletakkan fungsi getNew () dan fungsi register / inisialisasi terlebih dahulu.
... dan seterusnya. Ketika saya mengatakan pertama, maksud saya segera setelah c'tors dan d'tor - karena mereka adalah cara default untuk membuat instance kelas apa pun.
Fungsi-fungsi selanjutnya ada di:
bergantung pada apakah kelas tersebut dimaksudkan terutama sebagai penyimpanan data dengan beberapa fungsi, atau penyedia fungsi dengan beberapa anggota data.
sumber
Beberapa editor, seperti Eclipse dan keturunannya, memungkinkan Anda untuk menyusun ulang dalam tampilan garis besar vars dan metode, menurut abjad atau seperti di halaman.
sumber
Urutan publik diikuti oleh dilindungi dan pribadi lebih mudah dibaca oleh saya, Lebih baik menjelaskan logika kelas dalam komentar di atas file header secara sederhana dan perintah panggilan fungsi untuk memahami apa dosis kelas dan algoritma yang digunakan di dalamnya.
Saya menggunakan Qt c ++ untuk sementara dan melihat beberapa jenis kata kunci baru seperti
signal
danslot
saya lebih suka tetap memesan seperti di atas dan membagikan ide saya dengan Anda di sini.sumber