Sebuah saran dari "Kode Bersih" Bob Martin membuat saya menggaruk-garuk kepala .. "Jika suatu fungsi memanggil yang lain, mereka harus dekat secara vertikal dan pemanggil harus berada di atas callee"
Sejauh ini, saya telah sedikit banyak menempel pada pedoman .Net, yang mengelompokkan anggota kelas berdasarkan jenis (properti, ctors, fungsi) dan visibilitas (publik / prot / privat). Tip ini nampak seperti masalah pada awalnya .. tetapi "mungkin saja berhasil". Saya pribadi telah menemukan kasus di mana saya menyukai tata letak ini - lebih mudah untuk menelusuri ketika Anda berada di rantai panggilan yang tepat.
Gagasan di balik tip ini tampaknya masuk akal tetapi skenario lain seperti "biarkan saya melihat antarmuka publik kelas ini" mungkin menjadi lebih buruk. Mungkin Paman Bob mengandalkan kelas kecil dan dukungan IDE untuk jenis menonton ...
Adakah yang sudah mencoba ini dalam waktu lama?
Pembaruan: Sepertinya potongan kode sedang berurutan
class SomeType()
{
/// fields, ctors, et. all
public void Method1() { // calls HelperMethod1 and HelperMethod2 }
private void HelperMethod1 { // calls HelperMethod3 }
private void HelperMethod3 {}
private void HelperMethod2 {}
public void Method2 () { // and so on... }
}
sumber
Jawaban:
Saya mungkin akan mengambil risiko di sini, tapi saya ingin tahu apakah alat yang Anda gunakan berdampak pada ini. Saya merujuk pada editor teks versus keputusan IDE yang harus dibuat pengembang.
Dalam IDE, Anda memiliki lebih banyak fungsi untuk melihat file sumber. Biasanya, Anda bisa mendapatkan daftar metode yang diurutkan berdasarkan abjad, berdasarkan visibilitas, atau bahkan mengembalikan jenis di bilah sisi. Anda juga dapat melompat ke suatu metode jika Anda menggunakannya. Anda juga dapat membuat pohon panggilan untuk metode dan menelusuri. Anda juga biasanya memiliki perintah find yang kuat yang mungkin mendukung ekspresi reguler. Dalam situasi ini, urutan metode yang Anda buat benar-benar tidak masalah karena Anda memiliki pandangan selain kode sumber yang tersedia.
Dalam editor teks, Anda biasanya tidak memiliki fitur-fitur ini - yang terdekat dengan yang Anda miliki mungkin adalah penemuan / penggantian yang kuat. Di sini, Anda akan ingin lebih memperhatikan struktur file Anda karena mungkin lebih sulit untuk dinavigasi. Anda ingin meminimalkan waktu yang dihabiskan untuk mencari file yang Anda cari, dan urutan metode yang konsisten dan logis dapat membantu.
sumber
Intinya adalah bahwa hal-hal yang disebut lebih menarik daripada memanggil hal-hal. Semakin banyak metode memanggil metode lain, semakin besar kemungkinan bahwa metode tersebut adalah bagian dari API eksternal objek (bukan sebagai detail implementasi). Itu berarti API eksternal kelas - metode publik, jika bahasa Anda mendukung konsep itu - secara alami "ingin" berada di bagian atas file, membuatnya lebih mudah untuk menemukan metode itu. Sebaliknya, fungsi pembantu dan semacamnya akan "ingin" berada di bagian bawah file.
(Saya menjelaskan konsepnya, tidak mengevaluasi keefektifannya.)
sumber
Jika dengan jangka waktu yang Anda maksud selama lebih dari beberapa hari? Lalu Tidak
. Beberapa tahun yang lalu saya mulai melakukan ini pada beberapa kode baru, dan perlahan-lahan membuat diri saya gila, sampai saya berhenti.
Preferensi pribadi saya untuk meletakkan kelas adalah
Tapi itu bukan agama, properti dan metode bisa dicampur bersama. Visibilitas tidak masuk ke dalamnya (saya tidak mengelompokkan berdasarkan publik / dilindungi / pribadi)
Kami memiliki seorang lelaki di kantor ini yang memiliki struktur ketat dalam segala hal di file kelas, dengan semua yang dikelompokkan bersama dalam grup utama dan sub grup, semuanya tersarang dengan baik di kawasan. . . Saya harus mengakui bahwa saya pikir wilayah adalah pekerjaan Setan, mereka membuat saya berputar-putar.
Setiap kali saya membuka salah satu kelasnya, saya mati sedikit di dalam :(
sumber