আমার কোডটি বাড়তে শুরু করার সাথে আমার খুব সাধারণ প্রশ্ন রয়েছে যা কিছুক্ষণের জন্য আমাকে হতাশ করে চলেছে।
প্যারামিটারগুলি নেস্টেড ফাংশন কলগুলির দীর্ঘ রুটগুলির মধ্য দিয়ে গেলে গ্লোবাল ভেরিয়েবলগুলি দ্বারা প্রতিস্থাপন করা উচিত?
আমি বুঝতে পারি যে বিশ্বব্যাপী পরিবেশ কোনও প্রোগ্রামের রাজ্যটিকে অনির্দেশ্য করে তুলতে পারে কারণ অনেকগুলি ক্রিয়াকলাপ ভাগ করে নেওয়া ভেরিয়েবলগুলিকে সংশোধন করতে পারে তবে তবুও, গ্লোবাল স্পেস জিনিসগুলিকে এত সহজ করে তোলে।
আমাকে নিজের ব্যাখ্যা করুন:
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
।
আমি মনে করি এটি আমার সাথে ঘটছে কারণ আমি আসলে ডিজাইনের ধরণগুলি ব্যবহার করছি না কারণ আমি জাভাস্ক্রিপ্টে প্রোগ্রামিং করছি যা আমার কাছে মাঝারি প্রকল্পগুলির জন্য একটি-স্ক্রিপ্ট-ডিল-সমস্ত ভাষার সাথে মনে হয়।
কোন পরামর্শ? নিদর্শন? প্রয়োজনে আমি আরও নির্দিষ্ট হতে পারি।