JavaRush /جاوا بلاگ /Random-SD /جاوا ۾ گلوبل متغير: جڏهن انهن کي استعمال ڪيو وڃي؟
Анзор Кармов
سطح
Санкт-Петербург

جاوا ۾ گلوبل متغير: جڏهن انهن کي استعمال ڪيو وڃي؟

گروپ ۾ شايع ٿيل
سلام! هن آرٽيڪل ۾ اسان عالمي متغيرن بابت ڳالهائينداسين، انهن جي بيان ۽ مناسب استعمال جا مثال. هڪ ننڍڙو نوٽ: اسان عالمي درجي جي متغيرن تي غور نه ڪنداسين، اهو آهي، اهي جيڪي ڪنهن به هڪ طبقي ۾ پهچائي سگهجن ٿيون. اسان سڄي ايپليڪيشن جي عالمي متغيرن بابت ڳالهائينداسين - اهي جيڪي پوري ايپليڪيشن ۾ پهچائي سگھجن ٿيون. جاوا ۾ گلوبل متغير: جڏهن انهن کي استعمال ڪيو وڃي؟  - 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
گلوبل variables کي 2 قسمن ۾ ورهائي سگھجي ٿو:
  • متغير جيڪي تبديل ڪري سگھجن ٿا؛
  • variables جيڪي صرف پڙهي سگهجن ٿا.
پوئين کي گلوبل مستقل سڏيو ويندو آهي. عالمي مستقل ٺاھڻ لاءِ، توھان کي ھڪ متغير ٺاھڻ جي ضرورت آھي 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اچو ته نقصان سان شروع ڪريون. اچو ته تصور ڪريون هڪ ايپليڪيشن جنهن ۾ عالمي متغيرن سان گڏ هڪ ڪلاس آهي جنهن کي پڙهي ۽ ايڊٽ ڪري سگهجي ٿو. وقت سان گڏ، پروجيڪٽ ۾ طبقن جو تعداد، عالمي متغيرن ۽ طريقن جو تعداد جيڪي عالمي متغير استعمال ڪن ٿا، يا ٻين لفظن ۾، انھن تي منحصر آھن، وڌندا آھن. وقت سان گڏ، هر عالمي متغير مختلف مقصدن لاء سسٽم جي مختلف حصن ۾ پڙهيو ويندو آهي. هڪ متغير جو قدر سسٽم جي مختلف حصن ۾ اپڊيٽ ٿي سگهي ٿو. هن ائپليڪيشن جي دنيا جي مجموعي تصوير خاص طور تي وڌيڪ پيچيده ٿي ويندي آهي، ۽ اهو هيٺين نقصانن جي ڪري ٿو :
  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