سؤال

هل الحق في استخدام ثابت الخاص في الحالة التالية:

ويقول لدي لعبة مع تعيش متغير والمتغير startingLives. في بداية اللعبة I تعيين متغير حياة يساوي متغير startingLives. هذه هي الطريقة التي أود أن تفعل ذلك عادة:

private var lives:int = 0;
private var startingLives:int = 3;

private function startGame():void
{
   lives = startingLives;
}

و(على سبيل المثال متاحة أكشن راجع للشغل)

وسؤالي هو - هل هذا حقا أن تكون:

private var lives:int = 0;
private const STARTING_LIVES:int = 3;

private function startGame():void
{
  lives = STARTING_LIVES;
}

وStartingLives يبدو من غير المرجح أن تتغير في وقت التشغيل، لذلك يجب أن تستخدم CONST، وتغيير مرة أخرى إلى متغير إذا اتضح أن لا يكون ثابت؟

وUPDATE: الإجماع يبدو أن يكون هذا هو الاستخدام الجيد للثابت، ولكن ماذا عن اقتراح amdfan التي قد ترغب في تحميل قيمة في من ملف التكوين

هل كانت مفيدة؟

المحلول

وضعه في DEFAULT_STARTING_LIVES اسمه ثابت، ولكن أيضا متغير startingLives اسمه. في الوقت الراهن، تعيين startingLives = DEFAULT_STARTING_LIVES. وفي وقت لاحق، يمكنك تعيين startingLives على أساس قيمة من ملف التكوين. إذا لم يتم إنشاء الملف أو لم يتم العثور، لديك حتى الظهر.

و(بفضل التفاف على المجالس للتوسع في جوابي الأصلي.)

نصائح أخرى

نعم، هذا هو الاستخدام الجيد لCONST. وكقاعدة عامة من الإبهام، وينبغي بذل أي "متغير" قيمتها لن يغير في وقت ثابت. وهذا يتيح للمترجم لتحسين تلك القيم من خلال وضعها في (ROM) منطقة منفصلة من الذاكرة. (ملاحظة: هذا لا يضمن أن المترجم الخاص بك سوف تحسين، هو فقط يجعل من ممكن )

وأعتقد ثابت الخاص المناسب حيث لا يوجد استخدام خارج هذا السياق، وسيؤدي إلى فوضى إذا الملأ.

وبالتأكيد باستخدام ثابت في حالة الخاص بك هو أفضل من الرقم السحري - خاصة إذا كنت في حاجة لاستخدامها في أكثر من مكان واحد

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top