فا

‫ برنامه‌نويسي امن با زبان جاوا – قانون اعلان‌ها و مقدار دهي اوليه- قانون DCL00-J – بخش دوم

شماره:IRCAR201506263
تاريخ: 08/04/94
دومين موضوعي كه در برنامه نويسي امن با زبان جاوا مورد توجه قرار مي‌گيرد مربوط به اعلان‌ها و مقدار دهي اوليه است. در ادامه به اولين قانون (DCL00-J) ذيل اين موضوع پرداخته خواهد شد.
قانون DCL00-J – جلوگيري از دورهاي مقدار دهي اوليه كلاس (ادامه)
در بخش اول مقاله، اين قانون توضيح به همراه نمونه كد ناسازگار و راه حل آن شرح داده شد. در اين بخش از مقاله، دو نمونه ديگر از كد ناسازگار و راه حل‌هاي سازگار با آن ارائه خواهد شد.
يك نمونه ناسازگار با قانون (دور بين كلاسي)
در اين مثال ناسازگار، دو كلاس با متغيرهاي استاتيك وجود دارد كه مقادير آنها به همديگر وابسته هستند. اين دور هنگام ديدن كلاس‌ها در كنار يكديگر آشكار خواهد شد، اما در زمان ديدن كلاس‌ها به طور مجزا، احتمال در نظر نگرفتن آن وجود دارد.
ترتيب مقدار دهي اوليه كلاس‌ها مي‌تواند متغير باشد، به طوريكه مقادير متفاوتي را براي A.a و B.b محاسبه كند. اگر كلاس A ابتدا مقداردهي اوليه ‌شود، A.a برابر با مقدار 2 و مقدار B.b، 1 است و اگر ابتدا كلاس B مقدار دهي اوليه شود، اين مقادير برعكس خواهد بود.
راه حل سازگار با قانون (دور بين كلاسي)
اين راه حل سازگاري، دور بين كلاسي را از طريق حذف وابستگي A به B برطرف مي‌كند:
از طريق حذف دور و مستقل از ترتيب مقدار دهي اوليه، هميشه مقادير اوليهA.a برابر با 2 و B.b برابر با 3 است.
يك نمونه ناسازگار با قانون
برنامه نويس در اين مثال، متغير استاتيك كلاس اول را با استفاده از متد استاتيك در كلاس دوم مقدار دهي اوليه مي‌كند اما اين متد وابسته به متدي استاتيك در كلاس اول است:
اين كد، به درستي با استفاده از زبان ماشين جاوا و بدون توجه به اينكه آيا A اول بارگذاري شده است يا B، مقدار اوليه A.a را به 1 مقداردهي اوليه مي‌كند. اما مشخصات زبان جاوا (JLS) اين تضمين را فراهم نمي‌كند كه A.a به درستي مقدار دهي اوليه شود. به علاوه، دور در مقداردهي اوليه، نگهداري سيستم را سخت‌تر مي‌كند.
راه حل سازگار با قانون
اين راه حل سازگاري، متد c() را به كلاس B منتقل و دور را مي‌شكند:
ارزيابي خطر
دورهاي مقدار دهي اوليه ممكن است منجر به نتايج غيرمنتظره شوند.
مطالب مرتبط:
برنامه‌نويسي امن با زبان جاوا – آشنايي
برنامه‌نويسي امن با زبان جاوا – قانون اعلان‌ها و مقدار دهي اوليه- قانون DCL00-J – بخش اول
منبع:

نظرات

بدون نظر
شما برای نظر دادن باید وارد شوید

نوشته

 
تاریخ ایجاد: 9 تیر 1394

دسته‌ها

امتیاز

امتیاز شما
تعداد امتیازها: 0