Saya bertanya-tanya apakah ada standar untuk meletakkan daerah kelas.
Saat ini saya gunakan
Fields
Constructor
Properties
Public Methods
Private Methods
Fields
menjadi Properti Pribadi dan Properties
menjadi milik umum. Saya biasanya akan menggunakan subregional di dalamnya jika diperlukan, atau sesekali akan menambahkan daerah lain di bawah ini (seperti anggota antarmuka atau baseClass).
.net
programming-practices
Rachel
sumber
sumber
#region
tag untuk mendefinisikan bagian#region
sJawaban:
Enum yang Berhubungan Dengan Kelas atau kadang-kadang struct / kelas data murni (di atas definisi kelas aktual)
--- Definisi kelas ---
Anggota pribadi
CTORs / DTORs jika bahasa tersebut memiliki DTORs
Properti publik
Metode utilitas (metode pribadi atau terlindungi dengan cakupan kecil)
Fungsionalitas kelas (Dapat dibagi menjadi beberapa wilayah tergantung pada ruang lingkup kelas).
sumber
Sub Wilayah? Apakah kelas Anda memiliki Tanggung Jawab Tunggal ? (tersirat dalam itu ... jawaban saya adalah "Jarang ada daerah, kecuali mungkin untuk mengelompokkan properti, konstruktor dan metode" ... tetapi meskipun begitu, saya tidak menggunakannya sebanyak itu)
sumber
// ----------ViewModel Properties----------
Dengan begitu Anda masih dapat melihat kode (atau menciutkannya dengan menjabarkan dan melihat anggota). Daerah adalah untuk menyembunyikan sesuatu. Kode tidak boleh disembunyikan, kecuali jika dibuat otomatis atau apalah.Saya hanya ingin mengkonfirmasi bahwa Anda bermaksud "#regions" dan bukan tata letak kelas secara umum.
Saya terkejut tidak ada yang disebutkan untuk menghindari penggunaan daerah. Saya mengerti OP ingin mengambil jajak pendapat tentang meletakkan wilayah, tapi saya ingin meningkatkan sudut pandang alternatif.
Saya menghindari daerah. Saya suka melihat kode yang saya kerjakan. Jika Anda merasa sulit untuk menemukan apa yang Anda cari maka gunakan kode lipat dan kelompok konstruksi kelas yang sama bersama-sama.
Mengapa saya membenci daerah? CTRL+M,Ldan CTRL+M,Oakan beralih kode lipat. Namun, ketika runtuh menyembunyikan seluruh wilayah. Saya hanya perlu menutup metode / properti / komentar.
Jika ada terlalu banyak daerah mungkin itu bau kode dan kelas Anda melakukan terlalu banyak pekerjaan. Jeff Atwood menyediakan pos yang bagus tentang daerah yang layak dibaca
Kutipan favorit saya di #regions:
- Jeff Atwood
Yang sedang berkata, saya tahu banyak programmer bersikeras menggunakannya. Pertanyaan ini subyektif. Saya hanya berpikir saya akan menawarkan alternatif.
sumber
Ini bervariasi dari bahasa ke bahasa. Karena saya seorang pembuat kode Delphi, saya cenderung mengikuti konvensi standar Delphi, yang terlihat seperti ini:
Saya menemukan cara yang bagus untuk mengatur informasi yang mudah dibaca dan dipahami.
sumber
public
terlebih dahulu, karena sebagian besar pengguna hanya peduli tentangpublic
hal - hal.Saya cenderung mengungkapkannya dengan cara berikut:
Belum menggunakan bahasa yang menggunakan
Properties
jadi itu sebabnya mereka tidak ditata. Saya menempatkan metode dan bidang pribadi di bagian bawah karena jika orang lain menggunakan file ini dalam kode mereka, mereka hanya perlu memusatkan perhatian pada API, yang merupakan barang publik. Dan semua editor teks yang saya tahu, dan bahkan IDE, menetapkan kursor di bagian atas saat membuka file.sumber
Ini panggilan penghakiman bagi saya. Saya menggunakan daerah saat dibutuhkan untuk keterbacaan.
Saya juga menggunakan warna yang berbeda dalam skema warna Visual Studio saya (saat ini merah tua) untuk membuatnya menonjol dari sisa kode.
Contoh di mana saya mungkin menggunakan #region: Jika saya menulis metode pengujian untuk unit test yang membutuhkan potongan multi-baris XML, string XML akan mematahkan lekukan yang biasa (karena mulai sepanjang margin kiri dari jendela kode. Untuk menyembunyikan kejelekan, saya akan membungkusnya dalam #region, sehingga saya bisa menutupnya.
sumber
Buku Kode Bersih Bob Martin mendedikasikan seluruh bab ke 5 untuk memformat. Ada beberapa poin penting yang saya rangkum dengan baik.
Menjaga kode Anda tersusun dengan elemen-elemen yang biasanya berinteraksi secara vertikal berdekatan bersama-sama secara efektif menghilangkan segala kebutuhan untuk membuat wilayah tertentu. Jika kode Anda terlalu panjang sehingga memerlukan daerah untuk menyembunyikan banyak kode, maka mungkin itu adalah bau kode yang menunjukkan bahwa kelas berusaha melakukan terlalu banyak. Mungkin beberapa fungsi dapat dipindahkan ke kelas utilitas, atau didorong ke leluhur.
Jika Anda perlu "menyembunyikan" kode karena terlalu lama atau terlalu "jelek", maka Anda mungkin memiliki masalah yang lebih besar untuk dikhawatirkan daripada menggunakan daerah atau tidak. Secara pribadi saya tidak perlu menggunakannya, dan ketika mengerjakan kode orang lain, saya merasa saya selalu harus membukanya semuanya, jadi mengapa repot-repot?
sumber
Saat ini saya kelas tata letak seperti ini:
dan kemudian awali level akses ke setiap deklarasi (semacam, terkadang dikelompokkan berdasarkan akses). Saya biasa melakukan pengelompokan tingkat atas dengan akses, tetapi pada suatu saat, saya tidak tahu kapan, itu tidak berfungsi sebaik di atas. Sebagai contoh di C ++ / CLI (yang saya terpaksa gunakan saat ini :-() Anda dapat melakukan ini, yang mengacaukan pengelompokan-oleh-akses:
sumber
Jawaban orang gila: Saya tidak, paling tidak dalam soal C #. Antara Visual Studio dan R # saya secara ajaib dapat menavigasi ke anggota atau implementasi sehingga tidak ada gunanya terobsesi tentang hal ini; mulailah mengetik di mana kursor berada.
sumber
Seperti Wyatt dan beberapa jawaban lainnya, saya juga umumnya menghindari penggunaan wilayah. Daerah memiliki satu tujuan; untuk menyembunyikan kode yang tidak ingin Anda lihat. Jika Anda memiliki banyak kode dalam suatu kelas yang tidak ingin Anda lihat, dan karenanya Anda membutuhkan banyak daerah untuk memungkinkan Anda menutup kode tersebut, maka Anda mungkin memiliki terlalu banyak kode di dalam kelas. ReSharper tidak menghormati wilayah ketika memutuskan di mana menempatkan kode baru, kecuali jika itu menciptakan wilayah (yang dilakukannya untuk implementasi antarmuka).
Satu-satunya penggunaan daerah yang saya anggap dapat diterima adalah menyembunyikan kode "tidak dapat dihindari jelek"; kode yang berkaitan dengan detail implementasi spesifik yang tidak dapat dirancang dengan baik secara internal dengan standar saat ini. Ini biasanya canggih, kode esoterik yang umumnya tidak boleh dipusingkan oleh rata-rata programmer junior yang pernah ditulis. Ini adalah hal-hal seperti:
sumber