GUI koduyla ilgili hatırlanması gereken şey, olay odaklı olması ve olay odaklı kodun, her zaman rastgele organize edilmiş olay işleyicileri kütlesinin görünümüne sahip olmasıdır. Gerçekten dağınık olan şey, olayla ilgili olmayan kodları sınıfa atmaya çalıştığınız zamandır. Elbette, olay işleyicileri için destek sağlama görünümüne sahiptir ve olay işleyicilerinizi küçük ve küçük tutabilirsiniz, ancak etrafta dolaşan tüm bu ekstra destek kodu GUI kaynağınızın şişirilmiş ve dağınık görünmesini sağlar.
Öyleyse bu konuda ne yapabilirsiniz ve işleri nasıl refactor için kolaylaştırırsınız? İlk önce yeniden yapılanma tanımımı, zaman zaman yaptığım bir şeyden, sürekli olarak yaptığım kodla değiştireceğim. Neden? Çünkü yeniden yönlendirme yapmak, kodunuzu daha kolay bir şekilde değiştirmek yerine kodunuzu daha kolay bir şekilde değiştirebilmenizi sağlar. Sizden sadece burada anlambilimi değiştirmenizi istemiyorum, bunun yerine kodunuzu farklı görebilmek için biraz zihinsel calisthenics yapmanızı istiyorum.
En sık kullandığım bulduğum üç yeniden düzenleme tekniği, Rename , Extract Method ve Extract Class . Başka bir yeniden düzenleme yapmayı asla öğrenmeseydim, bu üçü hala kodumu temiz ve iyi yapılandırılmış tutmamı sağlayacaktı ve sorunuzun içeriğinden, muhtemelen neredeyse sürekli olarak aynı üç yeniden yapılandırmayı kullanırken kendinizi bulacağınız gibi geliyor. GUI kodunuzu ince ve temiz tutmak için.
Dünyadaki GUI ve Business mantığının mümkün olan en iyi şekilde ayrılmasına sahip olabilirsiniz ve yine de GUI kodu, ortasında bir kod mayınının patlatıldığı gibi görünebilir. Benim tavsiyem bu düzgün GUI yönetmek için yardımcı olmak için ekstra bir sınıf veya iki olması zarar olmamasıdır ve bu mutlaka olmak zorunda değildir Görüntüle MVC deseni uygulayarak eğer sınıfları - sık bulacaksınız rağmen ara sınıflar görüşünüze o kadar benzerdir ki, çoğu zaman rahatlık için onları birleştirme dürtüsünü hissedeceksiniz. Bunu kabul ediyorum, tüm görsel mantığı yönetmek için GUI'ye özel bir katman eklemenin gerçekten zarar vermemesidir, ancak muhtemelen bunu yapmanın yararlarını ve maliyetlerini ölçmek istersiniz.
Bu yüzden benim tavsiyem:
- GUI'nin Görünüm'e (veya bir ara katmana) nasıl bağlanacağını çağırmak ve tanımlamak dışında doğrudan GUI'nizin arkasında hiçbir şey yapmayın.
- Her görüşte ilgili şeyi tek bir sınıfa, hatta GUI penceresi başına tek bir sınıfa bağlamayı denemeyin, bunu sizin için mantıklı gelmiyorsa. Alternatifiniz, GUI mantığınızı yönetmek için sınıfları yönetmek için çok sayıda küçük ve kolay oluşturmaktır.
- Yöntemleriniz 4-5 kod satırından biraz daha büyük görünmeye başladığında, bunun gerekli olup olmadığını ve bir veya iki yöntemi çıkarmak mümkün olup olmadığını inceleyin, böylece bir sınıf anlamına gelse bile yöntemlerinizi yalın tutabilirsiniz daha birçok yöntemle.
- Sınıflarınız gerçekten büyük görünmeye başlıyorsa, çoğaltılmış işlevlerin TÜMÜNÜ kaldırarak başlayın ve ardından yöntemlerinizi mantıksal olarak gruplandırabilir veya başka bir sınıfı ya da iki sınıfı çıkarabileceksiniz.
- Her satır kod yazdığınızda yeniden düzenlemeyi düşünün. Çalışmak için bir kod satırı alırsanız, işlevselliği çoğaltmaktan kaçınmak veya davranışını değiştirmeden biraz daha yalın hale getirmek için yeniden aktarabileceğinizi görün.
- Kaçınılmaz olanı kabul edin, sisteminizdeki bir parçanın ya da diğerinin biraz şişkinlik hissetmeye başlayacağını, özellikle de gittiğinizde yeniden yapılanmayı ihmal ederseniz hissedeceğinizi kabul edin. Hatta iyi faktörlü kod tabanı ile, yine Okumanın daha yokmuş gibi hissedebilirsiniz olabilir yapmak. Bu, yazma yazılımı gerçeğidir, kendinizi her zaman "daha iyi" bir şeyler yapılabileceğini hissediyorsunuzdur, bu yüzden profesyonel bir iş yapmak ile altın kaplama arasında bir denge kurmanız gerekir.
- Çalıştığınız ve kodunuzu sakladığınız temizleyicinin kodunuz ne kadar az şişirilmiş gibi göründüğünü kabul edin.