JavaRush /مدونة جافا /Random-AR /المتغيرات العالمية في جافا: متى نستخدمها؟
Анзор Кармов
مستوى
Санкт-Петербург

المتغيرات العالمية في جافا: متى نستخدمها؟

نشرت في المجموعة
مرحبًا! سنتحدث في هذه المقالة عن المتغيرات العالمية وإعلانها وأمثلة للاستخدام المناسب. ملاحظة صغيرة: لن نأخذ في الاعتبار متغيرات الفئة العامة، أي تلك التي يمكن الوصول إليها ضمن أي فئة واحدة. سنتحدث عن المتغيرات العامة للتطبيق بأكمله - تلك التي يمكن الوصول إليها داخل التطبيق بأكمله. المتغيرات العالمية في جافا: متى يجب استخدامها؟  - 1

كيفية إنشاء المتغيرات العالمية

المتغيرات العامة هي متغيرات يمكن الوصول إليها من أي مكان في التطبيق. وبعبارة أخرى، نطاقها هو التطبيق بأكمله. لإنشاء مثل هذا المتغير في Java، تحتاج إلى إنشاء متغير ثابت عام في فئة عامة:
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
يمكن تقسيم المتغيرات العالمية إلى نوعين:
  • المتغيرات التي يمكن تحريرها؛
  • المتغيرات التي يمكن قراءتها فقط.
وتسمى هذه الأخيرة الثوابت العالمية. لإنشاء ثابت عام، تحتاج إلى إنشاء متغير finalوتعيين قيمة له عند تعريف المتغير:
public class Constants {

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

}
وفقًا لقواعد تسمية Java، يجب تسمية جميع الثوابت بأحرف كبيرة، مع فصل الكلمات بحرف سفلي. إذن فقد أنشأنا ثوابت، ولن نتمكن الآن من تغيير قيمها: المتغيرات العالمية في جافا: متى نستخدمها؟  - 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_VALUE, Boolean.TRUE, Collections.EMPTY_LISTإلخ.). لكن البرمجة لا تقتصر على استخدام المكتبات القياسية. غالبا ما يحدث أنك تحتاج إلى كتابة نوع من المنطق الفريد، والذي سيحتاج إلى الاعتماد على الثوابت الفريدة الخاصة بك. ولهذا السبب فإن استخدام الثوابت (المتغيرات العامة للقراءة فقط) يجعل الحياة أسهل في بعض الأحيان.

بشكل عام، يجب ألا تبالغ في استخدام المتغيرات العامة، وإذا أمكن، استخدم الثوابت فقط. قيل سابقًا أن استخدام المتغيرات العالمية في المشاريع الصغيرة ليس بالأمر السيئ. ولكن من الأفضل للمطور المبتدئ عدم استخدامها على الإطلاق. لسببين:
  1. كل ما يكتبه مطور مبتدئ هو في الأساس مشروع صغير. واستخدام المتغيرات العالمية في مشاريعه سيعلمه استخدام المتغيرات العالمية في كل مكان.
  2. من الأفضل أن تتعلم أولاً كيفية الاستغناء عن "الحيل المحرمة". ومع الخبرة، فإن فهم متى تكون هذه التقنيات مناسبة للاستخدام سيأتي من تلقاء نفسه.
تعليقات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION