Asıl istediğin, ad nauseum adındaki veya çıplak olan ad nauseum referanslarını sabitlere atmak.
for_each_chess_square (row, col) {
/*...*/
}
Eğer gerçekten bu tür döngüleri tekrarlayarak ve ne olursa olsun tekrarlayarak sabiti çoğaltacaksanız, buna bağlı kalmak en iyisidir 8
.
8
kendini tanımlayan; başka bir şey için duran bir makro değil.
Asla Gonna'yı (TM) 9x9'luk bir satranç programına dönüştürmüyorsunuz ve eğer yaparsanız, 8'in çoğalması en büyük zorluk olmayacak.
Belirteç 8 için 150.000 satırlık bir kod tabanı arayabilir ve hangi olayların saniye cinsinden ne anlama geldiğini sınıflandırabiliriz.
Daha da önemlisi, kodu modüler hale getirerek satranç bilgisinin mümkün olduğu kadar az yerde yoğunlaşmasını sağlamaktır. Sembolik bir isimle 8'e atıfta bulunan, satrança özgü sorumlulukla bağlanmış otuz yedi modülden, edebi bir 8'in gerçekleştiği bir satrança özgü üç modüle sahip olmak daha iyidir.
Bu 8 sabit programınızdaki bir gerilim kaynağı olduğunda veya bu durumda kolayca düzeltebilirsiniz. Şimdi olan gerçek sorunları düzeltin. Bu belirli 8 tarafından engellendiğinizi hissetmiyorsanız, bu içgüdü ile gidin.
Gelecekte alternatif tahta boyutlarını desteklemek istediğinizi varsayalım. Bu durumda, bu döngüler adlandırılmış bir sabit kullanıp kullanmadıklarını değiştirmek zorunda kalacaklardır 8
, çünkü boyutlar board.width
ve gibi bir ifade tarafından alınacaktır board.height
. BOARD_SIZE
Bunun yerine varsa 8
, bu yerleri bulmak daha kolay olacaktır. Yani bu daha az çaba. Ancak, değiştirilmesi çaba hakkında unutmamak gerekir 8
ile BOARD_SIZE
ilk etapta. Genel çaba daha düşük değil. Birinin kod üzerinde geçiş 8
yapması BOARD_SIZE
ve ardından alternatif boyutları desteklemek için bir başkasının değiştirilmesi, sadece 8
alternatif boyut desteğinden geçmekten daha ucuz değildir .
Buna tamamen soğuk, nesnel bir risk / fayda analizinden de bakabiliriz. Programın içinde şimdi çıplak sabitler var. Bunlar sabit ile değiştirilirse, faydası yoktur; program aynı. Her türlü değişiklikte sıfır riski yoktur. Bu durumda, küçük. Yine de, hiçbir faydası olmadan risk alınmamalıdır. Bu akıl yürütme karşısındaki değişikliği "satmak" için, bir fayda varsaymak zorundayız: farklı bir programla yardımcı olacak gelecekteki bir fayda: Programın şimdi bulunmayan gelecekteki bir versiyonu. Böyle bir program planlanmış ediliyorsa, bu hipotez ve ilişkili akıl vardır niyetli bona ve ciddiye alınmalıdır.
Örneğin, bu sabitleri daha da artıracak daha fazla kod eklemekten kaçınıyorsanız, onlardan kurtulmak isteyebilirsiniz. Bu sabitlerin örnekleri, yaklaşık olarak şimdiye kadar varolanların hepsi ise, neden rahatsız ediyorlarsa.
Ticari bir yazılım üzerinde çalıştıysanız, yatırım getirisi argümanları da geçerli olacaktır. Bir program satmıyorsa ve bazı sabit kodlanmış sayıları sabit olarak değiştirmek satışları iyileştirmeyecekse, çaba için tazminat almayacaksınız. Değişimin zaman yatırımının getirisi sıfırdır. Yatırım Getirisi argümanları paranın ötesine geçiyor. Bir program yazdınız, zamana ve emeğe yatırım yaptınız ve bundan bir şey çıkardınız: iadeniz, "R" iniz. Bu değişikliği tek başına yaparak, "R" den daha fazlasını elde edersiniz, ne olursa olsun, o zaman elbette. Daha fazla gelişme için bir planınız varsa ve bu değişiklik "R" inizi geliştirirse, aynen öyle. Değişiklik sizin için acil veya öngörülebilir "R" içermiyorsa, unut gitsin.