JavaRush /جاوا بلاگ /Random-UR /جاوا میں عالمی متغیرات: انہیں کب استعمال کریں؟
Анзор Кармов
سطح
Санкт-Петербург

جاوا میں عالمی متغیرات: انہیں کب استعمال کریں؟

گروپ میں شائع ہوا۔
ہیلو! اس مضمون میں ہم عالمی متغیرات، ان کے اعلان اور مناسب استعمال کی مثالوں کے بارے میں بات کریں گے۔ ایک چھوٹا سا نوٹ: ہم عالمی طبقے کے متغیرات پر غور نہیں کریں گے، یعنی وہ جن تک کسی ایک کلاس میں رسائی حاصل کی جا سکتی ہے۔ ہم پوری ایپلیکیشن کے عالمی متغیرات کے بارے میں بات کریں گے - وہ جو پوری ایپلیکیشن کے اندر ہی حاصل کی جا سکتی ہیں۔ جاوا میں عالمی متغیرات: انہیں کب استعمال کریں؟  - 1

عالمی متغیرات کیسے بنائیں

عالمی متغیر متغیرات ہیں جو ایپلیکیشن میں کہیں سے بھی قابل رسائی ہیں۔ دوسرے الفاظ میں، ان کا دائرہ کار پوری درخواست ہے۔ جاوا میں ایسا متغیر بنانے کے لیے، آپ کو پبلک کلاس میں ایک عوامی جامد متغیر بنانے کی ضرورت ہے:
public class Example {
    public static int a;
    public static int b;
    public static String str;
}
متغیرات a، bاور str- عالمی ہو گئے ہیں۔ ہم درخواست کے اندر دیگر کلاسوں سے براہ راست ان تک رسائی حاصل کر سکتے ہیں:
public class GlobalVarsDemo {
    public static void main(String[] args) {
        Example.a = 4;
        Example.b = 5;
        Example.str = "Global String variable value";

        System.out.println(Example.a);
        System.out.println(Example.b);
        System.out.println(Example.str);
    }
}
اگر ہم طریقہ چلاتے ہیں main، تو ہم درج ذیل آؤٹ پٹ دیکھیں گے:

4
5
Global String variable value
عالمی متغیرات کو 2 اقسام میں تقسیم کیا جا سکتا ہے:
  • متغیرات جن میں ترمیم کی جا سکتی ہے۔
  • متغیرات جو صرف پڑھے جاسکتے ہیں۔
مؤخر الذکر کو عالمی مستقل کہا جاتا ہے۔ عالمی مستقل بنانے کے لیے، آپ کو متغیر بنانے کی ضرورت ہے finalاور متغیر کی وضاحت کرتے وقت اسے ایک قدر تفویض کرنا ہوگی۔
public class Constants {

    public static final double PI = 3.1415926535897932384626433832795;
    public static final String HELLO_WORLD_STR = "Hello, World!";

}
جاوا کے نام سازی کے کنونشن کے مطابق، تمام کنسٹینٹس کو انڈر سکور کریکٹر کے ساتھ الگ کرتے ہوئے، اوپری کیس میں نام دیا جانا چاہیے۔ لہذا، ہم نے مستقل بنائے ہیں، اور اب ہم ان کی اقدار کو تبدیل نہیں کر سکیں گے: جاوا میں عالمی متغیرات: انہیں کب استعمال کریں؟  - 2تاہم، ہم ان کی اقدار کو پڑھ سکتے ہیں:
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println(Constants.HELLO_WORLD_STR);
    }
}
نتیجہ:

Hello, World!
public class ConstantsDemo {
    public static void main(String[] args) {
        double r = 10;
        String message = String.format("Площадь круга с радиусом %f=%f", r, getCircleSquare(r));
        System.out.println(message);

    }

    static double getCircleSquare(double r) {
        return Constants.PI * r * r;
    }
}
نتیجہ:

Площадь круга с радиусом 10,000000=314,159265

کیا آپ کو عالمی متغیرات استعمال کرنا چاہئے؟

انٹرنیٹ پر بہت سے مضامین ہیں، جن کا بنیادی پیغام یہ ہے: عالمی متغیرات برے، برے اور خوفناک ہیں۔ کیا یہ واقعی ہے؟ آئیے عالمی متغیرات کے فوائد اور نقصانات دینے کی کوشش کریں تاکہ ہر کوئی اپنا نتیجہ اخذ کر سکے۔ جاوا میں عالمی متغیرات: انہیں کب استعمال کریں؟  - 3چلو cons کے ساتھ شروع کرتے ہیں. آئیے ایک ایسی ایپلی کیشن کا تصور کریں جس میں عالمی متغیرات کے ساتھ ایک کلاس ہے جسے پڑھا اور ایڈٹ کیا جا سکتا ہے۔ وقت گزرنے کے ساتھ، پروجیکٹ میں کلاسوں کی تعداد، عالمی متغیرات اور طریقوں کی تعداد جو عالمی متغیرات کو استعمال کرتے ہیں، یا دوسرے لفظوں میں، ان پر انحصار کرتے ہیں، بڑھتے ہیں۔ وقت گزرنے کے ساتھ، ہر عالمی متغیر کو مختلف مقاصد کے لیے سسٹم کے مختلف حصوں میں پڑھا جاتا ہے۔ نظام کے مختلف حصوں میں متغیر کی قدر کو اپ ڈیٹ کیا جا سکتا ہے۔ اس ایپلی کیشن کی دنیا کی مجموعی تصویر نمایاں طور پر زیادہ پیچیدہ ہو جاتی ہے، اور اس سے درج ذیل نقصانات ہوتے ہیں :
  1. پڑھنے کی اہلیت میں کمی اور کوڈ کو سمجھنے میں دشواری بڑھ گئی۔
  2. کوڈ کی بحالی کی پیچیدگی میں اضافہ۔
  3. ایک عالمی متغیر کو تبدیل کرنے کے لیے، پورے کوڈ کا تجزیہ کرنا ضروری ہے تاکہ متغیر کو ایسی قدر پر متعین نہ کیا جائے جو سسٹم کے دوسرے حصوں کے لیے غلط ہو۔
  4. غلطیوں میں اضافہ جن کو ڈیبگ کرنا بہت مشکل ہے۔

    آئیے ایک عالمی متغیر، اشیاء کی ایک صف کا تصور کریں۔ سسٹم کے ایک حصے میں، مثال کے طور پر، اس صف میں تاروں کی توقع کی جاتی ہے، اور سسٹم کے دوسرے حصے میں، کسی نے فلوٹنگ پوائنٹ نمبر استعمال کرنے کا فیصلہ کیا۔ یہ ممکن نہیں کہ کوئی اس کو سمجھنا چاہے۔

  5. اگر آپ اپنے کوڈ میں عالمی متغیرات استعمال کرتے ہیں تو متغیر کے نام ایک جیسے ہو سکتے ہیں، اور ساتھ ہی کچھ لائبریریاں جو بدلے میں، عالمی متغیرات بھی استعمال کرتی ہیں۔ اس سے آپ کی درخواست کے اطراف اور آپ جس لائبریری کا استعمال کر رہے ہیں دونوں طرف سے غلطیاں پیدا ہو سکتی ہیں۔
  6. نظام کے مختلف حصوں کے درمیان رابطے کو بڑھاتا ہے جو عالمی متغیرات کا استعمال کرتے ہیں. اس کے برعکس، آپ کو کوڈ کے ڈھیلے جوڑے کے لیے کوشش کرنی چاہیے۔ ایک موٹی چیز رکھنے سے بہتر ہے کہ بہت سے چھوٹے سب سسٹمز کا ایک دوسرے سے ڈھیلے طریقے سے جڑا ہو۔ کیونکہ دماغ کے لیے ایک بہت ہی پیچیدہ اور مبہم چیز کے مقابلے میں کئی سادہ چیزوں سے نمٹنا آسان ہے۔
  7. یونٹ ٹیسٹ لکھنا زیادہ مشکل ہو جاتا ہے کیونکہ ٹیسٹ یہ نہیں جانتا کہ کون سے عالمی متغیرات کی ضرورت ہے اور انہیں کیسے شروع کرنے کی ضرورت ہے۔
  8. ملٹی تھریڈ ایپلی کیشنز میں، مختلف تھریڈز کے ذریعے عالمی متغیرات کا استعمال غلطیوں میں اضافہ کا باعث بنتا ہے جن کو ڈیبگ کرنا مشکل ہوتا ہے اور پروجیکٹ کی پیچیدگی میں اضافہ ہوتا ہے۔ اس کی وجہ سے، اس طرح کے متغیرات تک رسائی کو زیادہ درست طریقے سے ترتیب دینا ضروری ہے، انہیں مطابقت پذیری اور تالے سے لیس کرنا۔ یہ مستقبل میں شارٹ سرکٹ کا باعث بن سکتا ہے۔ مثال کے طور پر، تھریڈ A نے اپنے کام کے لیے متغیر X کو لاک کر دیا ہے، اور تھریڈ B نے اپنے کام کے لیے متغیر Y کو لاک کر دیا ہے، اور تھریڈ A کو اب متغیر Y کی ضرورت ہے، اور تھریڈ B کو متغیر X کی ضرورت ہے۔ نتیجتاً، پروگرام منجمد ہو جائے گا۔
لیکن یہ سب غلط ہے۔ یہ خطرات کی تفصیل ہے، جس کا امکان بڑھتا جاتا ہے جیسے جیسے پروجیکٹ بڑھتا ہے اور اس میں عالمی متغیرات کی تعداد بڑھ جاتی ہے۔ آئیے پیشہ کی طرف بڑھتے ہیں :
  1. چھوٹے منصوبوں میں، عالمی متغیر منصوبے کو کام کرنے کے لیے سب سے آسان چیز ہیں۔
  2. بعض اوقات عالمی متغیرات کے استعمال کا خوف اس منصوبے میں اور بھی پیچیدگی کا باعث بنتا ہے۔ پھر پروگرامرز سنگلٹن بنانا شروع کرتے ہیں اور دوسرے ڈیزائن پیٹرن کا سہارا لیتے ہیں۔
  3. پروگرامنگ میں، آپ کو اکثر کچھ ناقابل تغیر اقدار پر انحصار کرنے کی ضرورت ہوتی ہے۔

    سب سے زیادہ معقول بات یہ ہے کہ ایسی اقدار کو مستقل کے طور پر لکھیں، کیونکہ صرف مستقل اس بات کی ضمانت دیتا ہے کہ متغیر کی قدر وقت کے ساتھ تبدیل نہیں ہوگی۔ اس طرح کے مستقل ہر وقت پایا جا سکتا ہے ( ،،، Integer.MAX_VALUEوغیرہ ) ۔ لیکن پروگرامنگ صرف معیاری لائبریریوں کے استعمال تک محدود نہیں ہے۔ ایسا اکثر ہوتا ہے کہ آپ کو کسی قسم کی انوکھی منطق لکھنی پڑتی ہے، جس کے لیے آپ کے اپنے منفرد مستقل پر انحصار کرنا پڑے گا۔ اسی لیے بعض اوقات مستقل (صرف پڑھنے کے لیے عالمی متغیرات) کا استعمال واقعی زندگی کو آسان بنا دیتا ہے۔Integer.MIN_VALUEBoolean.TRUECollections.EMPTY_LIST

عام طور پر، آپ کو عالمی متغیرات کا زیادہ استعمال نہیں کرنا چاہئے؛ اگر ممکن ہو تو، صرف مستقل استعمال کریں۔ پہلے کہا گیا تھا کہ چھوٹے منصوبوں میں عالمی متغیرات کا استعمال برا نہیں ہے۔ لیکن ایک نوآموز ڈویلپر کے لیے بہتر ہے کہ وہ انہیں بالکل استعمال نہ کریں۔ دو وجوہات کی بناء پر:
  1. ہر وہ چیز جو ایک نیا ڈویلپر لکھتا ہے بنیادی طور پر ایک چھوٹا پروجیکٹ ہوتا ہے۔ اور اپنے منصوبوں میں عالمی متغیرات کا استعمال اسے ہر جگہ عالمی متغیرات کا استعمال کرنا سکھائے گا۔
  2. یہ بہتر ہے کہ پہلے "حرام چالوں" کے بغیر کرنا سیکھیں۔ اور تجربے کے ساتھ، یہ سمجھنا کہ ایسی تکنیکیں کب استعمال کرنے کے لیے موزوں ہوں گی۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION