7 نکته مفید کاتلین، برای برنامه نویسان اندروید
معرفی زبان برنامه نویسی کاتلین باعث شد کدها کمتر و سریعتر اجرا شوند و کار برنامه نویسان راحت تر شود. در سال 2017 کاتلین به صورت رسمی در کنفرانس I/O گوگل به عنوان دومین زبان رسمی برای برنامه نویسی معرفی شد و گوگل پشتیبانی خود را از این زبان اعلام کرد.
برنامه نویسانی که به تازگی می خواهند برنامه نویسی اندروید را شروع کنند، بهتر است کاتلین را به عنوان اولین زبان برنامه نویسی در محیط اندروید استودیو انتخاب کنند.
کاتلین نیز مانند جاوا شیء گرا است و روی JVM (ماشین مجازی جاوا) به سادگی کار می کند. این زبان شباهت زیادی به ساختار جاوا دارد ولی نسبت به آن کد کمتر و ساده تری دارد به طوریکه می توان از برنامه نویسی با کاتلین لذت برد.
استفاده از تابع let برای Nullable
در زبان برنامه نویسی جاوا برای اینکه شرط Null بودن را بررسی کنیم باید از ساختارهای کنترلی استفاده می کردیم ولی در زبان کاتلین این کار به سادگی با تابع let امکان پذیر است و شما را از پیچیدگی های ساختارهای کنترلی رهایی می بخشد.
تابع let به عنوان scope function (توابع قلمرو) تعریف می شود به این معنی که متغیرهایی که در داخل آن متد تعریف می شود در بیرون از آن تابع قابل استفاده نیستند. استفاده از scope function ها باعث خوانایی بیشتر کدها می شود شاید در کدهای کم حجم متوجه این موضوع نشوید ولی در کدهای زیاد این خوانایی خیلی به چشم می آید. این توابع شامل let,run,with,apply و also هستند. همچنین شما می توانید از let ها به صورت تودرتو یا زنجیر کردن دسته ای از موارد nullable نیز استفاده کنید توجه کنید که بیرونی ترین مقدار در let برگشت داده می شود.
به مثال زیر توجه کنید:
عملگر ELVIS به شکل:? است که برای مقادیر Null استفاده می شود تا در صورت تهی بودن مقدار برنامه کرش نکند. در نمونه کد بالا می توانیم تابع را به صورت doSomething(a ?: 0) فراخوانی کنیم، در این صورت مطمئن می شویم که a یک مقدار پیش فرض دارد.
ایجاد لیست تنها با یک خط کد در کاتلین
در زبان کاتلین ایجاد یک لیست با مقادیر پیش فرض کاملاً ساده است. کد زیر را ببینید در این کد یک آرایه صحیح با 10 آیتم ایجاد شده است که هر عنصر آن با عدد 1 مقداردهی شده است.
IntArray(10) { 1 }.asList()
شاید از انجام این کار تنها با یک خط کد تعجب کنید که چگونه لیستی با عناصر مختلف ایجاد می کند باید بگوییم که این قدرت کاتلین را نشان می دهد. روش کلاسیک برای انجام این کار توسط حلقه ها صورت می گرفت که در زیر نمونه کدها را می توانید ببینید و با هم مقایسه کنید.
استفاده از تابع های require و check برای خروج سریع از دستورات شرطی
تابع require پارامتر ارسالی را اعتبارسنجی می کند و در صورت false بودن IllegalArgumentException را صادر می کند. از طرف دیگر تابع check هنگامی که حالت شیء false باشد IllegalArgumentException را صادر می کند.
این دو تابع هنگامی که بخواهیم از دستورات شرطی کاتلین، خیلی سریع خارج شویم استفاده می شود.
استفاده از توابع apply و with برای جلوگیری از کد تکراری
توابع apply و with از توابع scope هستند و کارایی شبیه به هم دارند. در این توابع می توان از کلمه کلیدی this به context متصل شد به این معنی که اجزای شیء در دسترس ما هستند حتی می توان کلمه کلیدی this را نیز حذف کرد. مقدار بازگشتی در apply به context شیء مربوط می شود. در این دو تابع می توان ارجاع به شیء را حذف کرد تا کار ساده تر شود. تابع apply همان شیء را برمی گرداند و در هنگام مقداردهی شیء فراخوانی می شود ولی تابع with را زمانی استفاده می کنیم که شیء از نوع non-nullable باشد و ما شیء را به عنوان آرگومان ارسال می کنیم.
با استفاده از این دو تابع می توانیم از حجم کد تکراری کاسته تا کد خواناتر، تمیزتر و مرتب تر شود.
استفاده از اپراتورهای partition و groupBy برای تقسیم بندی لیست ها
Partition به شما اجازه می دهد یک لیست را به دو زیرلیست (sublist) تقسیم کنید به طوریکه قسمت اول آن شامل عناصری باشد که شرط خاصی را اجرا می کند و مابقی آن داخل زیر لیست دوم قرار داشته باشد.
از طرف دیگر groupBy یک map از زیرلیست ها را به صورت جفت های key-value برمی گرداند و با فراخوانی ویژگی value روی groupBy می توانید لیستی تشکیل شده از سایر لیست ها را دریافت کنید.
تصویر زیر نمونه کدی از هر دو نوع را نمایش می دهد.
تغییر دو ویژگی با یک خط کد
یکی از سؤالاتی که برنامه نویسان با آن روبرو می شوند تعویض دو متغیر با هم است. به طور معمول شما برای تعویض مقدار دو متغیر از یک متغیر کمکی استفاده می کنید. ما می توانیم به صورت a=a-b و b=b-a کد را کاهش دهیم و حتی می توانیم این کد را کمتر هم کنیم.
با استفاده از ویژگی تعویض دو ویژگی با یک خط کد می توانیم با یک خط کد در کاتلین این کار را انجام دهیم. به کد زیر توجه کنید:
a = b.also { b = a }
ترجیح دادن متدهای مرجع (Method References) پیش از بیان Lambda Expressions برای سناریوهای ساده
لامبدا (Lambda) در کاتلین به یک تابع بی نام گفته می شود. در زبان کاتلین اگر لامبدا تنها یک پارامتر داشته باشد دیگر لزومی برای تعریف دقیق نوع پارامتر نیست و می توانیم از کلمه کلیدی it استفاده کنیم که این مورد یک پیشنهاد خوب برای کد نویسی است.
با استفاده از method reference میتوان یک متد را با استفاده از نام آن فراخوانی کرد یا یک متد را به عنوان یک متغیر به متد دیگر ارسال نمود. Member reference ها با:: مشخص می شوند. در سمت چپ کلاس یا شیء نوشته می شود و در سمت راست آن ویژگی آن نوشته می شود. در زیر نمونه کدی قرار دارد که به شما نشان می دهد چطور استفاده از Member reference ها بجای lambda expression ها باعث کوتاه و آسان تر شدن کد می شود.
سخن آخر
امیدواریم ترفندهای ذکر شده در این مقاله برای شما مفید باشد و شما را در برنامه نویسی با زبان کاتلین موفق تر کند.
دیدگاهتان را بنویسید