Saya mendengar banyak tentang menjaga metode tetap pendek dan saya telah mendengar banyak programmer mengatakan bahwa menggunakan tag #region dalam suatu metode adalah tanda yang pasti bahwa metode ini terlalu panjang dan harus di refactored menjadi beberapa metode. Namun, menurut saya ada banyak kasus di mana memisahkan kode dengan tag #region dalam suatu metode adalah solusi terbaik untuk refactoring ke dalam beberapa metode.
Misalkan kita memiliki metode yang komputasinya dapat dipisahkan menjadi tiga fase yang agak berbeda. Lebih jauh, masing-masing tahapan ini hanya relevan dengan perhitungan untuk metode ini , dan dengan mengekstraksinya ke dalam metode baru, tidak ada gunanya bagi kita untuk menggunakan kembali kode. Lalu, apa manfaat dari mengekstraksi setiap fase ke dalam metodenya sendiri? Sejauh yang saya tahu, yang kita dapatkan hanyalah keterbacaan dan ruang lingkup variabel yang terpisah untuk setiap fase (yang akan membantu mencegah modifikasi dari fase tertentu dari secara tidak sengaja melanggar fase lain).
Namun, kedua hal ini dapat dicapai tanpa mengekstraksi setiap fase ke dalam metodenya sendiri. Tag wilayah memungkinkan kami untuk menciutkan kode ke dalam bentuk yang sama terbaca (dengan manfaat tambahan bahwa kita tidak lagi harus meninggalkan tempat kita di file ini jika kita memutuskan untuk memperluas dan memeriksa kode), dan cukup membungkus setiap fase dalam {}
menciptakan ruang lingkup sendiri untuk bekerja dengannya.
Manfaat melakukannya dengan cara ini adalah bahwa kita tidak mencemari ruang lingkup tingkat kelas dengan tiga metode yang sebenarnya hanya relevan dengan cara kerja dalam metode keempat. Segera refactoring metode panjang menjadi serangkaian metode pendek bagi saya tampaknya menjadi kode-reuse yang setara dengan optimasi prematur; Anda memperkenalkan kompleksitas ekstra untuk mengatasi masalah yang dalam banyak kasus tidak pernah muncul. Anda selalu dapat mengekstrak salah satu fase ke dalam metode sendiri nanti jika ada peluang untuk menggunakan kembali kode.
Pikiran?
#region
tag, saya mematikan kode lipat di Visual Studio sama sekali. Saya tidak suka kode yang mencoba bersembunyi dari saya.