Tôi có một câu hỏi rất đơn giản đã ám ảnh tôi trong một thời gian khi mã của tôi bắt đầu phát triển.
Các tham số có nên được thay thế bằng các biến toàn cục khi chúng đi qua các tuyến dài của các lệnh gọi hàm lồng nhau?
Tôi hiểu rằng môi trường toàn cầu có thể làm cho trạng thái của một chương trình không thể đoán trước được vì nhiều chức năng có thể sửa đổi các biến được chia sẻ, nhưng, không gian toàn cầu làm cho mọi thứ trở nên dễ dàng.
Hãy để tôi tự giải thích:
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.
}
Được thay thế bởi:
globalX;
functionA(){
globalX = something
functionB()
}
...
...
...
finallyDoSomethingWithX(){
globalX += 1
}
Tôi cảm thấy cách thứ hai mang lại rất nhiều sự tự do cho chương trình bởi vì các tham số có thể tích lũy dễ dàng và đôi khi cũng có thể rất hạn chế khi mã phải được sử dụng lại, nhưng đồng thời tôi cảm thấy như hàm sẽ mất tính mô đun khi liên quan đến một biến trong môi trường toàn cầu, cũng mất khả năng sử dụng lại, ví dụ, khi tôi muốn hoạt động finallyDoSomethingWithX
với một biến khác tha globalX
.
Tôi nghĩ điều này xảy ra với tôi bởi vì tôi không thực sự sử dụng các mẫu thiết kế vì tôi đang lập trình bằng Javascript, mà đối với tôi cảm giác giống như một ngôn ngữ một tập lệnh cho tất cả các dự án trung bình.
Có lời khuyên nào không? hoa văn? Tôi có thể được cụ thể hơn nếu cần thiết.