Yang perlu diingat tentang kode GUI adalah bahwa itu adalah event-driven, dan kode event-driven selalu akan memiliki penampilan massa penangan acara yang diorganisir secara acak. Di mana itu menjadi sangat berantakan adalah ketika Anda mencoba untuk memasukkan kode non-event-driven ke dalam kelas. Tentu, ini memiliki tampilan memberikan dukungan untuk penangan acara dan Anda dapat menjaga penangan acara Anda baik dan kecil, tetapi semua kode dukungan tambahan yang melayang-layang membuat sumber GUI Anda tampak membengkak dan berantakan.
Jadi apa yang dapat Anda lakukan tentang hal ini, dan bagaimana Anda dapat membuat hal-hal lebih mudah untuk diperbaiki? Yah, pertama-tama saya akan mengubah definisi refactoring saya dari sesuatu yang saya lakukan sesekali menjadi sesuatu yang saya lakukan terus menerus saat saya membuat kode. Mengapa? Karena Anda ingin refactoring memungkinkan Anda untuk lebih mudah memodifikasi kode Anda, dan bukan sebaliknya. Saya tidak hanya meminta Anda untuk mengubah semantik di sini, tetapi meminta Anda untuk melakukan sedikit senam mental agar dapat melihat kode Anda secara berbeda.
Tiga teknik refactoring yang saya temukan paling sering saya gunakan adalah Rename , Extract Method , dan Extract Class . Jika saya tidak pernah mempelajari satu pun refactoring lainnya, ketiganya akan tetap memungkinkan saya untuk menjaga kode saya tetap bersih dan terstruktur dengan baik, dan dari isi pertanyaan Anda, sepertinya saya mungkin akan menemukan diri Anda menggunakan tiga refactoring yang sama hampir secara konstan di Untuk menjaga kode GUI Anda tetap tipis dan bersih.
Anda dapat memiliki pemisahan terbaik GUI dan logika Bisnis di dunia, dan masih kode GUI dapat terlihat seperti kode yang telah diledakkan di tengahnya. Saran saya adalah bahwa tidak ada salahnya untuk memiliki kelas ekstra atau dua untuk membantu Anda untuk mengelola GUI Anda dengan benar, dan ini tidak perlu harus Anda View kelas jika Anda menerapkan pola MVC - meskipun sering Anda akan menemukan kelas perantara sangat mirip dengan pandangan Anda sehingga Anda akan sering merasakan keinginan untuk menggabungkannya demi kenyamanan. Menurut saya, tidak ada salahnya menambahkan lapisan khusus GUI tambahan untuk mengelola semua logika visual, namun Anda mungkin ingin mempertimbangkan manfaat dan biaya untuk melakukannya.
Karenanya saran saya adalah:
- Jangan melakukan apa pun secara langsung di belakang GUI Anda kecuali untuk memohon dan menentukan bagaimana GUI akan terhubung ke View (atau lapisan perantara).
- Jangan coba-coba setiap hal terkait tampilan menjadi satu kelas - atau bahkan satu kelas per jendela GUI - kecuali Anda masuk akal untuk melakukannya. Alternatif Anda adalah membuat banyak kelas yang kecil dan mudah dikelola untuk mengelola logika GUI Anda.
- Ketika metode Anda mulai terlihat sedikit lebih besar dari 4-5 baris kode, periksa apakah ini perlu dan apakah mungkin untuk mengekstrak satu atau dua metode sehingga Anda dapat menjaga metode Anda ramping, bahkan jika ini berarti kelas dengan lebih banyak metode.
- Jika kelas Anda mulai terlihat sangat besar, mulailah dengan menghapus SEMUA fungsi yang diduplikasi, dan kemudian lihat apakah Anda dapat mengelompokkan metode Anda secara logis sehingga Anda dapat mengekstraksi satu atau dua kelas lain.
- Pikirkan tentang refactoring setiap kali Anda menulis satu baris kode. Jika Anda mendapatkan satu baris kode untuk bekerja, lihat apakah Anda bisa melakukan refactor untuk menghindari duplikasi fungsi, atau membuatnya sedikit lebih ramping tanpa mengubah perilaku.
- Terimalah yang tak terhindarkan, bahwa Anda akan selalu merasa bahwa satu atau lain bagian dalam sistem Anda akan mulai merasa sedikit kembung, terutama jika Anda mengabaikan refactoring saat Anda pergi. Bahkan dengan basis kode yang diperhitungkan dengan baik, Anda masih dapat merasakan seolah-olah ada lebih banyak yang dapat Anda lakukan. Ini adalah kenyataan menulis perangkat lunak, bahwa Anda akan selalu merasa bahwa sesuatu yang lebih bisa dilakukan "lebih baik", jadi Anda perlu menemukan keseimbangan antara melakukan pekerjaan profesional, dan menyepuh emas.
- Terima bahwa semakin bersih Anda mencoba dan menjaga kode Anda, semakin sedikit kode Anda yang kembung.