ایجاد متغیرها و نامگذاری آنها
همانطور که در بخش قبلی یاد گرفتید، یک شی وضعیت خود را در فیلدها (Fields) ذخیره میکند. بحث «شی چیست؟» شما را با فیلدها آشنا کرد، اما احتمالاً هنوز چند سؤال دارید: قوانین و قراردادهای نامگذاری فیلد چیست؟ علاوه بر int چه انواع داده دیگری وجود دارد؟ آیا فیلدها هنگام اعلام باید مقداردهی اولیه شوند؟ اگر مقداردهی اولیه نشوند، آیا مقدار پیشفرض دریافت میکنند؟
زبان جاوا انواع متغیر زیر را تعریف میکند:
متغیرهای Instance (فیلدهای Non-Static)
از نظر فنی، اشیا وضعیت فردی خود را در فیلدهای non-static ذخیره میکنند — فیلدهایی که بدون کلمه کلیدی static اعلام شدهاند. فیلدهای non-static به عنوان متغیرهای instance هم شناخته میشوند چون مقادیرشان برای هر نمونه از کلاس منحصربهفرد است؛ currentSpeed یک دوچرخه مستقل از currentSpeed دوچرخه دیگر است.
متغیرهای کلاس (فیلدهای Static)
متغیر کلاس هر فیلدی است که با modifier static اعلام شده باشد؛ به کامپایلر میگوید فقط یک نسخه از این متغیر وجود دارد، صرفنظر از اینکه کلاس چند بار نمونهسازی شده باشد. فیلدی که تعداد دندههای نوع خاصی از دوچرخه را تعریف میکند میتواند static باشد چون مفهوماً همان تعداد دنده روی تمام نمونهها اعمال میشود. کد static int numGears = 6; چنین فیلد staticای ایجاد میکند. همچنین کلمه کلیدی final میتواند اضافه شود تا نشان دهد تعداد دندهها هرگز تغییر نمیکند.
متغیرهای محلی (Local Variables)
مشابه نحوه ذخیره وضعیت شی در فیلدها، یک متد اغلب وضعیت موقت خود را در متغیرهای محلی ذخیره میکند. نحوه اعلام متغیر محلی مشابه اعلام فیلد است (مثلاً int count = 0;). هیچ کلمه کلیدی خاصی متغیر را بهعنوان محلی مشخص نمیکند؛ این تعیین کاملاً از مکان اعلام متغیر میآید — بین آکولاد باز و بسته یک متد. متغیرهای محلی فقط در متدهایی که در آنها اعلام شدهاند قابل مشاهده هستند و از بقیه کلاس قابل دسترسی نیستند.
پارامترها
پارامترها را قبلاً در کلاس Bicycle و متد main برنامه «Hello World!» دیدهاید. امروز یاد بگیرید که پارامترها همیشه به عنوان «متغیر» طبقهبندی میشوند، نه «فیلد». این مورد برای سایر ساختارهای پذیرنده پارامتر هم صادق است (مانند Constructorها و handlerهای Exception).
اگرچه، بقیه این آموزش از دستورالعملهای کلی زیر هنگام بحث درباره فیلدها و متغیرها استفاده میکند: اگر درباره «فیلدها بهطور کلی» (بدون متغیرهای محلی و پارامترها) صحبت میکنیم، ممکن است بگوییم «فیلدها». اگر بحث درباره «همه موارد بالا» است، ممکن است بگوییم «متغیرها». اگر زمینه نیاز به تفکیک داشته باشد، از اصطلاحات مشخص (static field، متغیرهای محلی و غیره) استفاده میکنیم. همچنین ممکن است گاهی اصطلاح عضو (member) را ببینید. فیلدها، متدها و انواع تودرتوی یک نوع، مجموعاً اعضای آن نامیده میشوند.
نامگذاری متغیرها
هر زبان برنامهنویسی قوانین و قراردادهای خاص خود را برای اسامی مجاز دارد و زبان جاوا هم از این قاعده مستثنا نیست. قوانین و قراردادهای نامگذاری متغیرها را میتوان به صورت زیر خلاصه کرد:
- نام متغیرها به حساس بزرگی و کوچکی حروف حساس است. نام متغیر میتواند هر شناسه قانونی باشد — توالی حروف و اعداد Unicode با طول نامحدود، که با حرف، علامت دلار
$یا زیرخط_شروع شود. اما قرارداد این است که همیشه نام متغیرها را با حرف شروع کنید، نه$یا_. علاوه بر این، کاراکتر علامت دلار طبق قرارداد هرگز استفاده نمیشود. کاراکتر زیرخط هم مشابه است؛ اگرچه فنی قانونی است، اما این روش توصیه نمیشود. فضای خالی مجاز نیست. - کاراکترهای بعدی میتوانند حروف، اعداد، علامتهای دلار یا زیرخط باشند. قراردادها (و عقل سلیم) هم بر این قاعده حاکم هستند. هنگام انتخاب نام برای متغیرها، از کلمات کامل به جای مخففهای رمزآلود استفاده کنید. این کار کد شما را خواناتر و قابلفهمتر میکند. در بسیاری موارد کد شما را خودتوضیحی میکند؛ فیلدهایی به نام
cadence،speedوgearبسیار شهودیتر از نسخههای مخفف مانندs،cوgهستند. همچنین نام انتخابی نباید کلمه کلیدی یا رزرو شده باشد. - اگر نام انتخابی از یک کلمه تشکیل شده، تمام حروف کوچک باشند. اگر بیش از یک کلمه دارد، حرف اول هر کلمه بعدی بزرگ باشد. نامهای
gearRatioوcurrentGearنمونههای عالی این قرارداد هستند. اگر متغیر مقدار ثابت ذخیره کند، مانندstatic final int NUM_GEARS = 6، قرارداد کمی تغییر میکند و تمام حروف بزرگ و کلمات با زیرخط جدا میشوند. طبق قرارداد، کاراکتر زیرخط در جاهای دیگر هرگز استفاده نمیشود.
این محتوا کاملا رایگان توسط تیم کدلپر ترجمه شده و در اختیار شما کاربران عزیز قرار گرفته است، هر گونه کپی برداری برای مقاصد غیر رایگان و بدون ذکر منبع، مورد پیگیری قانونی قرار میگیرد.
ترجمه شده از منبع: منبع مستندات