Genellikle bu sorunla birkaç adım atıyorum, ne zaman daha ileri gidileceğini anlayamadığımda duruyorum.
İlk olarak, yaptıklarınızı yapın. DRY ile zorlanın. Eğer varsa yok kıllı karmaşa ile bitirmek, bitirdiniz. Sizin durumunuzda olduğu gibi, yinelenen kodunuz yoksa ancak her boole değeri 20 farklı yerde kontrol edilmişse, bir sonraki adıma geçin.
İkinci olarak, kodu bloklara ayırın. Booleanların her biri, çalıştırmayı sağ bloğa yönlendirmek için sadece bir kez (belki de bazen iki kez) refere edilir. İki boolean ile dört blokla karşılaşırsınız. Her blok neredeyse aynıdır. KURU gitti. Her bloğu ayrı bir yöntem yapmayın . Bu daha zarif olurdu, ancak tüm kodu bir yönteme koymak, bakım yapan herkesin her değişikliği dört yerde yapması gerektiğini görmesini kolaylaştırır, hatta mümkün kılar. İyi organize edilmiş kod ve uzun bir monitörle, farklar ve hatalar neredeyse açık olacaktır. Artık korunabilir kodunuz var ve orijinal karışık karmaşadan daha hızlı çalışacak.
Üçüncüsü, bloklarınızın her birinden yinelenen kod satırları tutmaya ve bunları güzel, basit yöntemlere dönüştürmeye çalışın. Bazen hiçbir şey yapamazsınız. Bazen fazla bir şey yapamazsınız. Ancak yaptığınız her küçük parça sizi KURU'ya geri götürür ve kodu takip etmeyi biraz daha kolay ve daha güvenli hale getirir. İdeal olarak, orijinal yönteminiz yinelenen kod içermeyebilir. Bu noktada, boole parametreleri olmadan birkaç yönteme bölmek isteyebilirsiniz veya edemeyebilirsiniz. Arama kodunun rahatlığı artık ana endişe kaynağıdır.
İkinci adım yüzünden cevabımı çoktan buraya ekledim. Yinelenen koddan nefret ediyorum, ancak bir sorunu çözmenin tek anlaşılabilir yolu varsa, bunu herkesin ne yaptığınızı bir bakışta bileceği şekilde yapın. Birden çok blok ve yalnızca bir yöntem kullanın. Blokları adlar, boşluklar, hizalamalar, ... her şeyde mümkün olduğunca aynı yapın. Farklılıklar daha sonra okuyucuya atlamalıdır. KURU bir şekilde nasıl yeniden yazıldığını açıklığa kavuşturabilir ve eğer değilse, sürdürmek makul derecede basit olacaktır.
createTrajectory...
işlevlerin çağırdığı özel işlevlere dönüştürülebilir mi?