Kodum büyümeye başladığında bir süredir bana musallat olan çok basit bir sorum var.
Parametreler, iç içe geçmiş işlev çağrılarının uzun yollarından geçerken genel değişkenlerle değiştirilmeli mi?
Küresel ortamın bir programın durumunu öngörülemez hale getirebileceğini biliyorum, çünkü birçok işlev paylaşılan değişkenleri değiştirebilir, ancak yine de küresel alan işleri kolaylaştırır.
Kendimi açıklayayım:
functionA(){
x = something
functionB(x)
}
functionB(x){
functionC(x)
}
functionC(x){
finallyDoSomethingWithX(x)
}
finallyDoSomethingWithX(x){
x += 1 //Very dummy example ignoring pass by value, not reference.
}
İle ikame edilmiş:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
İkinci yolun programlamaya çok fazla özgürlük verdiğini hissediyorum, çünkü parametreler kolayca birikebilir ve ayrıca kodun yeniden kullanılması gerektiğinde bazen çok kısıtlayıcı olabilir, ancak aynı zamanda bir değişkenle ilgili olduğunda fonksiyonun modülerliğini kaybedeceğini hissediyorum. Örneğin, finallyDoSomethingWithX
farklı bir değişkenle çalışmak istediğimde yeniden kullanılabilirliği kaybediyor globalX
.
Bu benim başıma geliyor çünkü aslında tasarım desenleri kullanmıyorum çünkü Javascript'te programlama yapıyorum, bu benim için orta projeler için tek bir komut dosyası ile uğraşan bir dil gibi geliyor.
Önerileriniz var mı? desenler? Gerekirse daha spesifik olabilirim.