איתחול משתנים

שפת ג'אווה אינה מתירה להשתמש בתוכן של משתנה אם היא אינה בטוחה שנקבע לו ערך, כלומר, שבוצעה השמה של ערך לתוך המשתנה. ניסיון להשתמש במשתנה לפני שנקבע לו ערך גורמת לשגיאת קומפילציה.

אפשר לאתחל משתנים מייד כאשר מגדירים אותם, אבל מותר להשאיר אותם ללא ערך ולקבוע את הערך בהמשך. כל זמן שהערך נקבע לפני השימוש הראשון, השימוש במשתנה תקין.

לפעמים התוכנית קובעת ערך למשתנה באחת מכמה דרכים, אבל הקומפיילר לא מספיק חכם כדי לדעת שתמיד אכן המשתנה יקבל ערך לפני השימוש בו. במקרים כאלה הקומפיילר ידווח על שגיאה. כדי שהתוכנית תעבור קומפילציה, צריך לקבוע ערך סתמי למשתנה לפני קביעת ערכו האמיתי, או לשנות מעט את התוכנית כך שהקומפיילר יווכח שתמיד נקבע למשתנה ערך.

דיווחי הסרק הללו של הקומפיילר על שגיאות הן מחיר שאנו משלמים על בדיקות קפדניות של הקומפיילר. הבדיקות הללו מפחיתות את הפגמים בתוכניות, אבל לפעמים הן דורשות תכנות נוסף רק כדי להתגבר על בדיקה קפדנית מדי.

שאלות

  1. שני במעט את החלק בתוכנית שבו נקבע ערכו של parity כך שהקומפיילר לא ידווח על שגיאה. כדאי לנסות לשנות גם על ידי מתן ערך סתמי למשתנה באתחול וגם על ידי שינוי קטן במשפטי התנאי שבהם נקבע למעשה הערך של המשתנה.