ฉันมีคำถามง่าย ๆ ที่หลอกหลอนฉันซักพักเมื่อรหัสของฉันเริ่มขึ้น
พารามิเตอร์ควรถูกแทนที่ด้วยตัวแปรโกลบอลเมื่อพวกเขาผ่านเส้นทางยาวของการเรียกฟังก์ชันที่ซ้อนกัน?
ฉันเข้าใจว่าสภาพแวดล้อมทั่วโลกสามารถทำให้สถานะของโปรแกรมไม่สามารถคาดเดาได้เพราะฟังก์ชั่นหลายอย่างสามารถปรับเปลี่ยนตัวแปรที่แชร์ได้ แต่ถึงกระนั้นโลกก็ยังทำให้สิ่งต่าง ๆ ง่ายขึ้น
ให้ฉันอธิบายตัวเอง:
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.
}
แทนที่โดย:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
ฉันรู้สึกว่าวิธีที่สองให้อิสระมากมายในการเขียนโปรแกรมเนื่องจากพารามิเตอร์สามารถสะสมได้ง่ายและยังสามารถ จำกัด บางครั้งเมื่อรหัสต้องถูกนำมาใช้ซ้ำ แต่ในเวลาเดียวกันฉันรู้สึกว่าฟังก์ชั่นจะหลวมโมดูลเมื่อมันเกี่ยวข้องกับตัวแปร ในสภาพแวดล้อมของโลกนอกจากนี้ยังสามารถนำมาใช้การสูญเสียตัวอย่างเช่นเมื่อผมต้องการที่จะทำงานกับอีกท่าที่แตกต่างกันตัวแปรfinallyDoSomethingWithX
globalX
ฉันคิดว่าสิ่งนี้เกิดขึ้นกับฉันเพราะฉันไม่ได้ใช้รูปแบบการออกแบบจริง ๆ เพราะฉันเขียนโปรแกรมใน Javascript ซึ่งสำหรับฉันรู้สึกเหมือนเป็นหนึ่งในข้อตกลงกับทุกภาษาสำหรับโครงการขนาดกลาง
คำแนะนำใด ๆ รูปแบบ? ฉันสามารถเฉพาะเจาะจงมากขึ้นถ้าจำเป็น