Apakah ada pedoman C # resmi untuk urutan item dalam hal struktur kelas?
Apakah itu pergi:
- Bidang Publik
- Bidang Pribadi
- Properti
- Konstruktor
- Metode
?
Saya ingin tahu apakah ada aturan yang keras dan cepat tentang urutan barang? Aku agak di semua tempat. Saya ingin tetap dengan standar tertentu sehingga saya bisa melakukannya di mana saja.
Masalah sebenarnya adalah properti saya yang lebih kompleks akhirnya tampak sangat mirip metode dan mereka merasa tidak pada tempatnya di atas sebelum konstruktor.
Ada tips / saran?
c#
.net
coding-style
code-cleanup
code-structure
mmcdole
sumber
sumber
public
danprotected
anggota.private
atauinternal
anggota (saya percaya). Cara melihat yang baguspublic
danprotected
, bagaimanapun. Kita dapat melihat sumber dari kelas .NET Framework, di sini referenceource.microsoft.com jugaJawaban:
Menurut Dokumentasi Aturan StyleCop pemesanan adalah sebagai berikut.
Di dalam kelas, struct atau antarmuka: (SA1201 dan SA1203)
Dalam masing-masing kelompok ini pesan melalui akses: (SA1202)
Di dalam masing-masing grup akses, pesan dengan statis, kemudian non-statis: (SA1204)
Dalam masing-masing grup bidang statis / non-statis, pesan dengan hanya-baca, kemudian tidak-baca: (SA1214 dan SA1215)
Daftar yang belum dibuka adalah 130 baris, jadi saya tidak akan membuka gulungannya di sini. Bagian metode yang belum dibuka adalah:
Dokumentasi mencatat bahwa jika urutan yang ditentukan tidak sesuai - katakanlah, banyak antarmuka sedang dilaksanakan, dan metode dan properti antarmuka harus dikelompokkan bersama - kemudian gunakan kelas parsial untuk mengelompokkan metode dan properti terkait bersama-sama.
sumber
Daripada mengelompokkan berdasarkan visibilitas atau berdasarkan jenis item (bidang, properti, metode, dll.), Bagaimana dengan pengelompokan berdasarkan fungsionalitas?
sumber
Ini adalah pertanyaan lama tetapi masih sangat relevan, jadi saya akan menambahkan ini: Apa hal pertama yang Anda cari ketika Anda membuka file kelas yang mungkin Anda baca atau belum baca? Bidang? Properti? Saya telah menyadari dari pengalaman bahwa hampir selalu saya pergi berburu untuk konstruktor, karena hal yang paling mendasar untuk dipahami adalah bagaimana objek ini dibangun.
Oleh karena itu, saya mulai menempatkan konstruktor sebagai yang pertama di file kelas, dan hasilnya secara psikologis sangat positif. Rekomendasi standar menempatkan konstruktor setelah banyak hal lain terasa disonan.
Fitur konstruktor primer yang akan datang dalam C # 6 memberikan bukti bahwa tempat alami untuk konstruktor berada di bagian paling atas kelas - sebenarnya konstruktor primer ditentukan bahkan sebelum kurung buka.
Sangat lucu betapa banyak perbedaan penataan ulang seperti ini. Ini mengingatkan saya pada bagaimana
using
pernyataan yang digunakan dipesan - dengan System namespaces terlebih dahulu. Perintah "Atur Penggunaan" Visual Studio menggunakan pesanan ini. Sekarangusing
hanya dipesan secara alfabet, tanpa perlakuan khusus yang diberikan untuk ruang nama Sistem. Hasilnya hanya terasa lebih sederhana dan bersih.sumber
Saya tidak tahu tentang standar bahasa atau industri, tetapi saya cenderung untuk meletakkan berbagai hal dalam urutan ini dengan setiap bagian terbungkus dalam #region:
menggunakan Pernyataan
Namespace
Kelas
Anggota pribadi
Properti publik
Konstruktor
Metode publik
Metode pribadi
sumber
Saya akan merekomendasikan menggunakan standar pengkodean dari IDesign atau yang terdaftar di situs web Brad Abram . Itu adalah dua yang terbaik yang saya temukan.
Brad akan mengatakan ...
sumber
Seperti disebutkan sebelumnya tidak ada dalam bahasa C # yang menentukan tata letak, saya pribadi menggunakan daerah, dan saya melakukan sesuatu seperti ini untuk kelas rata-rata.
Masuk akal bagi saya juga
sumber
Dari StyleCop
bidang pribadi, bidang publik, konstruktor, properti, metode publik, metode pribadi
Karena StyleCop adalah bagian dari proses pembuatan MS, Anda dapat melihatnya sebagai standar de facto
sumber
Biasanya saya mencoba mengikuti pola berikut:
Setiap bagian (statis dan instance) terdiri dari jenis anggota berikut:
Kemudian anggota diurutkan berdasarkan visibilitas (dari kurang ke lebih terlihat):
Urutannya bukan dogma: kelas sederhana lebih mudah dibaca, namun, kelas yang lebih kompleks membutuhkan pengelompokan khusus konteks.
sumber
Preferensi saya adalah memesan berdasarkan jenis dan kemudian mengurangi visibilitas sebagai berikut
Saya tahu ini melanggar Style Cop dan jika seseorang dapat memberi saya alasan yang bagus mengapa saya harus menempatkan detail implementasi jenis sebelum antarmuka, saya bersedia mengubah. Saat ini, saya memiliki preferensi yang kuat untuk menempatkan anggota pribadi yang terakhir.
Catatan: Saya tidak menggunakan bidang publik atau yang dilindungi.
sumber
Yang paling mungkin Anda temukan adalah "Pedoman Desain, Kode Terkelola dan .NET Framework" ( http://blogs.msdn.com/brada/articles/361363.aspx ) oleh Brad Abrams
Banyak standar diuraikan di sini. Bagian yang relevan adalah 2,8 saya pikir.
sumber
satu-satunya pedoman pengkodean yang saya lihat disarankan untuk ini adalah meletakkan bidang di bagian atas definisi kelas.
saya cenderung menempatkan konstruktor berikutnya.
komentar umum saya adalah bahwa Anda harus tetap berpegang pada satu kelas per file dan jika kelasnya cukup besar sehingga organisasi properti versus metode menjadi perhatian besar, seberapa besar kelasnya dan haruskah Anda refactoring? apakah itu mewakili beberapa masalah?
sumber
Saya lebih suka menempatkan bidang pribadi di bagian atas bersama dengan konstruktor, kemudian menempatkan bit antarmuka publik setelah itu, kemudian bit antarmuka pribadi.
Juga, jika definisi kelas Anda cukup lama untuk memesan barang menjadi penting, itu mungkin bau kode yang menunjukkan kelas Anda terlalu besar dan kompleks dan Anda harus refactor.
sumber
Saya menyimpannya sesederhana mungkin (setidaknya untuk saya)
Enumerasi
Deklarasi
Konstruktor
Mengesampingkan
Metode
Properties
Event Handler
sumber
Tentu saja tidak ada dalam bahasa yang memberlakukannya dengan cara apa pun. Saya cenderung mengelompokkan berbagai hal berdasarkan visibilitas (publik, kemudian dilindungi, kemudian pribadi) dan menggunakan #region untuk mengelompokkan hal-hal terkait secara fungsional, terlepas dari apakah itu properti, metode, atau apa pun. Metode konstruksi (apakah fungsi sebenarnya atau fungsi pabrik statis) biasanya tepat di atas karena mereka adalah hal pertama yang perlu diketahui klien.
sumber
Saya tahu ini sudah lama tetapi pesanan saya adalah sebagai berikut:
dalam urutan publik, dilindungi, pribadi, internal, abstrak
Saya juga suka menulis properti seperti ini (bukan pendekatan steno)
sumber