Her küçük adım için boole değişkenleri oluşturun:
bool step1 = i + u == b || q >= a;
bool step2 = a != b && p.isGood() && group1;
bool step3 = group2 || k.isSomething() || m > n;
if (step3) { doSomething(); }
Bu elbette her adım için farklı isimler dışında Lacrymology'nin cevabına benzer.
Eğer isim ise step1
, step2
ve step3
iyi kavramsal mantıklı gelen şekilde, bu kadar çok okunaklı tarafından olmalıdır. p.isGood()
ve k.isSomething()
bazen orijinal kodunuzda bulunmayacağı durumlarda çağrılabilir, bu nedenle bu işlevler pahalıysa veya bu kodu çok sıkı bir döngüde çalıştırıyorsanız bu bir seçenek olmaz.
Öte yandan, yeni değişkenler yaratmanın başarabileceği performans isabeti hakkında endişelenmenize gerek yok; iyi bir derleyici onları optimize eder.
Dikdörtgen çarpışma algılamalı bir örnek (yukarıda belirtilen performans isabeti nedeniyle muhtemelen kullanmazsınız):
if((a.x + a.width >= b.x || b.x + b.width >= a.x)
&& (a.y + a.height >= b.y || b.y + b.width >= a.y)
)
{ collision(); }
Olabilir:
bool horizMatch = a.x + a.width >= b.x || b.x + b.width >= a.x;
bool vertMatch = a.y + a.height >= b.y || b.y + b.width >= a.y;
if(horizMatch && vertMatch) { collision(); }
Ayrıca, kodunuzu olduğu gibi bırakmak istiyorsanız, bunun da tamamen iyi olacağını düşünüyorum. Dürüst olmak gerekirse kodunuzun oldukça okunaklı olduğunu düşünüyorum. Açıkçası tam a b x y i u p k m n
olarak ne olduğunu bilmiyorum , ama yapıya gelince, bana iyi geliyor.