آخرین باری که مجبور شدید فایل string.xml باز کنید و به سختی و غرزنان دنبال ایدی String مورد نظر خودتون بگردید کی بوده ؟ یا اینکه تک تک همه drawable باز کنید و اونی که مدنظرتونه رو پیدا کنید ؟
هروقت که پروژه جدید شروع کردید خیلی مواظب architecture, CI, build flavors و و و ... بودید ولی آیا استراتژی مناسبی برای نام گذاری resources داشتید ؟
باید داشته باشید ! نبود نام مناسب باعث میشه که در مدیریت پروژتون خسته بشید با نام گذاری درست میتونید راحت پروژه کنترل کنید مخصوصا در پروژه های بزرگ !
همه resources از یه قرداد ساده پیروی میکنن :
<WHAT> _ <WHERE> _ <DESCRIPTION> _ <SIZE>
بیایم اول در مورد تک تک اینا صحبت کنیم
هموطوری که از اسمش پیداست نشان میده که دقیقا resources چه چیزی هستن ؟ معمولا Android View Class
برای مثال :
e.g. MainActivity -> activiy
توضیحی درباره اینکه از لحاظ منطقی در کجای اپ شما قرار دارد اگر در جاهای مختلفی استفاده میکنید از all و در غیر این صورت از اسم کلاسی که داخلش ازش استفاده میشه استفاده کنید
برای مثال :
e.g. MainActivity -> main
ArticleDetailFragment -> articledetail
یه توضیحی تقریبا یک کلمه برای تفکیک عناصر در یک صفحه
مثال :
e.g. title
این قسمت اختیاری و معمولا برای سایز دهی استفاده میشه
مثال :
24dp
small
معمولا در پروژه ها ما برای هر اسکرینی یک Layout دارم پس در نتیجه خیلی ساده ست نحوه نام گذاریش :
WHAT_WHERE.XML
What معمولا یکی از موارد زیر است :
activity = content view for activity
fragment = view for a fragment
view = inflated by a custom view
item = layout used in list/recycler/gridview
layout = layout reused using the include tag
مثال :
در String ها کلمه what نامربوطه پس بجاش از Where برای نشان دادن محل استفاده , استفاده میکنیم :
<WHERE>_<DESCRIPTION>
و یا برای استفاده از String در کل برنامه :
all_<DESCRIPTION>
مثال :
این هم مانند String ها از Where استفاده میکنیم :
<WHERE>_<DESCRIPTION>_<SIZE>
و یا برای استفاده در کل برنامه :
all_<DESCRIPTION>_<SIZE>
به صورت اختیاری میتوانید یک آرگومان Size اضافه کنید که یا میتواند به صورت 26 باشد یا large
مثال :
برای ID کلمه What نام کلاسی است که به آن تعلق دارد و Where اسکرینی است که در ان قرار دارد و میتوانید برای ID هایی که مشابه هستند میتوانید DESCRIPTION هم به صورت اختیاری اضافه کنید :
<WHAT>_<WHERE>_<DESCRIPTION>
مثال :
پروژه باید مجموعه محدودی از dimensions را تعریف کنید که مرتبا مورد استفاده قرار میگیرد که این باعث میشه کلمه all به طور پیشفرض در نامگذاری باشد :
<WHAT>_all_<DESCRIPTION>_<SIZE>
برای جاهای خاص میتوانید از Where هم استفاده کنید
کلمه WHAT در dimensions معمولا یکی از موارد زیر است البته توجه داشته باشید که لیست پایین شامل بیشترین موارد استفاده شده از کلمه What است :
برای جلوگیری از مشکل در آرگومان Where کلاس های شما باید اسم های منحصر به فرد داشته باشند پس در نتیجه شما نمیتوانید MainActivity و MainFragment داشته باشید چون پیشوند main قبلا مورد استفاده قرار گرفته
با عوض کردن اسم کلاس اسامی که در resource ها قرار تغییر نمیکنند پس اگر شما کلاس MainActivity را به SecondActivity تغییر دادید layout activity_main به activity_second تغییر نخواهد کرد امیدواریم که یه روزی اندروید استودیو چنین ویژگی را اضافه کنه :)
این قرار داد برای همه resource نیست و بعضی ها جایی توی این قرار داد ندارند مانند: Raw Assets
ممنون که وقتتون رو در اختیار من گذاشتید :)
بنظرتون خوب نیست که همه روی این قرار داد تمرکز کنیم و در پروژه هامون استفاده کنیم که تقریبا یه زبان مشترک بین ما بشه تا بتونیم راحت تر کد هارو ری ویو کنیم ؟ ؟ نظرتون برام خیلی مهمه
اگه هم جایی اشتباه کردم لطفا بهم بگید تا ویرایش کنم...
Ref :https://jeroenmols.com/blog/2016/03/07/resourcenaming/
مقاله ی دیگه هم نوشتم برای اینه بتونی متوجه شی چه موقعی کیبوردت باز شده !