تا پایان امشب - بیشترین تخفیف تا امروز (%۷۰ و %۸۷) ویژه حمایت از دانشجویان‌ و کسب‌وکارهای آسیب‌دیده جزئیات

چرا کاتلین مقصد نهایی است؟


چرا کاتلین مقصد نهایی است؟

کاربردهای زبان کاتلین

اکنون زمان آن رسیده که زبان برنامه نویسی تان را نو کنید. امروز قصد داریم در ادامه مقالات آموزش زبان کاتلین ، در مورد ویژگی ها و مزایای زبان کاتلین حرف بزنیم و دلایلی را نام ببریم که شما مجبور شوید در پروژه ی بعدی تان به سمت این زبان بیایید. تا همین چند وقت پیش جاوا با اختلاف در صدر زبان های برنامه نویسی مورد علاقه‌مان بود اما با آمدن کاتلین و کار با این زبان تازه نفس اما حرفه ای، جای خود را به کاتلین داد و در جای دوم قرار گرفت.

کاتلین توسط گروه JetBrains توسعه پیدا کرده است، گروهی که کارهای درخشانی مانند IntelliJ و ReSharper را در کارنامه خود دارند که هر کدام از این IDEها در دل کاتلین شما را مبهوت خود خواهند کرد. کاتلین کاربردی و موجز است و همین امر باعث می شود که از کدنویسی در این زبان احساس خوب و تجربه ی غنی ای را بدست بیاورید.

به علاوه این زبان به دو حوزه ی جاوا اسکریپت(JavaScript) و بزودی ماشین کد (Machine Code) کامپایل می کند که البته بهتر هست روی محیط اصلی اش تمرکز کنید یعنی ماشین مجازی جاوا(Java Virtual Machine). در ادامه مواردی را به شما خواهیم گفت که شما به طور کامل برای رفتن به سمت کاتلین قانع شوید:

1. صمیمیت با جاوا

کاتلین به طور کامل با جاوا همکاری می کند. شما می توانید حتی پروژه های قدیمی جاوا را با کاتلین پیش ببرید. از آنجاییکه تمامی فریم ورک های جاوا که دوستشان دارید هنوز در دسترس هستند، فرقی نمی کند که با چه فریم ورکی در کاتلین کد بزنید، همه ی پروژه هایتان برای کسانی که با جاوا کار می کنند قابل فهم و استفاده است.

2. سینتکس(Syntax) آشنا

کاتلین از آن دست زبان ها نیست که خروجی، محیط آکادمیک باشد بلکه Syntax آن تقریبا برای تمامی برنامه نویسانی که از محیط برنامه نویسی شیءگرا می‌آیند آشناست. البته که تفاوت هایی میان جاوا و کاتلین وجود دارد مانند عبارات دستوری” val” ” var”. برای فهم بیشتر به قطعه کد پایین نگاه کنید:

چرا کاتلین مقصد نهایی است؟

3. فرآیند ارزیابی رشته ای

بنظر می آید نسخه ی بهینه تری از فرآیند () String.formatجاوا در کاتلین تعریف شده باشید:

چرا کاتلین مقصد نهایی است؟

4. ارجاعات نوشتار

با کاتلین می‌توانید در هر جایی از کدنویسی که حس کردید نیاز دارید از قابلیت ارجاعات عبارت یا دستوری که وارد کردید استفاده کرده و خوانایی کدهایتان را بهبود ببخشید.

چرا کاتلین مقصد نهایی است؟

5. کست های(Casts) هوشمند

کامپایلر(Compiler) کاتلین منطق نوشتارتان را رصد می کند و در صورت امکان به صورت خودکار آن را کست می کند، که بدین معناست که با کمک این کست های واضح دیگر نیازی به چک کردن با دستور insatanceof نیست.

چرا کاتلین مقصد نهایی است؟

6. برابری های شهودی

دیگر نیازی نیست عبارت ()equals را بکار ببرید، تنها با نوشتن عبارت == اوپراتور کاتلین برابری ساختاری را بررسی می کند:

چرا کاتلین مقصد نهایی است؟

7. Argument آرگمان‌های پیش فرض

نیازی نیست چندین روش مشابه با آرگمان های مختلف تعریف کنید:

چرا کاتلین مقصد نهایی است؟

8. آرگمان های نام گذاری شده

ترکیب آرگمان های پیش فرض و نام گذاری شده، شما را از وابستگی به بیلدرها(builder) بی نیاز می کند:

چرا کاتلین مقصد نهایی است؟

9. عبارت “کِی”(When)

عبارت switch case رو با یک عبارت خوانا تر و منعطف تر جایگزین می کنیم:

چرا کاتلین مقصد نهایی است؟

هم به شکل یک جمله هم به شکل یک عبارت کار می کنه هم با آرگیومنت هم بدون آرگیومنت.

چرا کاتلین مقصد نهایی است؟

10. تنظیمات

می توانید عبارات set و get را به صورت دلخواه تنظیم کرده و در بخش های عمومی(public fields) بکار ببرید. این قابلیت باعث می شود تا دیگر کدهایمان خراب نشوند.

چرا کاتلین مقصد نهایی است؟

11. کلاسِ “داده”

این کلاس همان صورت کامل شده ی POJO با عبارات ()tostring() ،equals() ،hashCode و () copy است که برخلاف نسخه ی جاوا نیازی نیست شما صد خط کد بنویسید:

چرا کاتلین مقصد نهایی است؟

12. Overloading عملگر:

مقادیر از پیش تعیین شده ی عمل گرها می توانند Overload شوند تا خوانایی کدهایتان را بهبود ببخشند:

چرا کاتلین مقصد نهایی است؟

13. اعلان های تخریب

برخی از آبجکت ها (object) می توانند تخریب شوند، به عنوان مثال این قابلیت برای مپ های(map) تکرار پذیر مفید است:

چرا کاتلین مقصد نهایی است؟

14. محدوده ها:

برای خوانایی بیشتر:

چرا کاتلین مقصد نهایی است؟

15. توابع پسوند

آیا خاطرتان هست زمانی که برای اولین بار یک list را در جاوا دسته بندی کردید؟ اگر جوابتان مثبت است بنابراین می دانید که نمی توانستید تابع ()sort را پیدا کنید بنابراین باید سراغ یک جاوا کار حرفه ای می رفتید و یا اینکه در گوگل جست و جو می کردید تا فرآیند ()Collections.sort را یاد بگیرید. و بعدتر زمانی که شما مجبور بودید یک  string را بزرگ نمایی کنید، کد نویسی تان بخاطر عدم دانستن فرآیند ()StringUtils.capitalize. برای نوشتن تابع کمک کننده خودتان متوقف می‌شد. اگر تنها یک مسیر ساده برای اضافه کردن تابع جدید به کلاس های قدیمی می بود، آن مسیر IDE خواهد بود که با داشتن قابلیت اصلاح و پیشنهاد کدها به شما در پیداکردن تابع درست کمک می کند. در کاتلین همین مسیر طولانی را به روش زیر می توانید به راحتی انجام دهید:

چرا کاتلین مقصد نهایی است؟

این کتابخانه ی استاندارد، در گسترش عملکرد انواع نسخ اصلی جاوا کمک شایانی کرده و بخصوص نیاز اصلی برای string به شمار می رود:

چرا کاتلین مقصد نهایی است؟

16. امنیت Null

تقریبا جاوا به استاتیک (ایستا) ترین شکل ممکن نوشته شده است. در جاوا، تضمینی وجود ندارد که متغیری از جنس رشته به یک رشته ارجاع داده شود، بلکه باید حتما به null ارجاع داده شود. این اجبار سبب می شود تا امنیت در هنگام بررسی نوع استاتیک نادیده گرفته شود، در نتیجه توسعه دهندگان جاوا همیشه در ترس از NPE ها به سر می برند.
کاتلین این معضل را با تفکیک به دو دسته ی  بدون null و null پذیر حل کرده است. بدون null به صورت پیش فرض در کاتلین لحاظ شده است و همانطور که در تصویر مشاهده می کنید به راحتی می توانید با اضافه کردن یک علامت سوال آن را null پذیر کنید:

چرا کاتلین مقصد نهایی است؟

کار به همینجا ختم نمی شود، بلکه کاتلین شمارا مجبور می کند تا زمانی که می خواهید به گونه ی nullپذیری دسترسی پیدا کنید در برابر NPEها از خود محافظت نمایید:

چرا کاتلین مقصد نهایی است؟

و درست در زمانی که شاید مشکل بزرگی در پیش پایتان احساس می کنید، به راحتی آب خوردن توسط امکاناتی که در کاتلین وجود دارد این مشکل حل می شود. همانطور که قبلا اشاره شد در کاتلین شما کست(cast) های باهوشی در اختیار دارید که عمل کستینگ را چه برای انواع null پذیر و چه برای غیر nullها در هر جایی که ممکن باشد انجام دهید:

چرا کاتلین مقصد نهایی است؟

همچنین شما می توانید از علامت سوال برای امنیت بیشتر استفاده کنید. با این کار خود null را پیش از ورود به NPE ارزیابی می کنید:

چرا کاتلین مقصد نهایی است؟

ارزیابی های امنیتی می توانند درکل، پیچیدگی هایی که بعلت عدم بررسی nullها در دیگر زبان ها ممکن است گاها رخ دهد را هشدار داده و در زمانی که مقدار پیش‌فرضی را بجای null بخواهید می توانید از  ?: elvis operator  استفاده کنید:

چرا کاتلین مقصد نهایی است؟

اگر هیچ کدام از این موارد برایتان کار نکرد و شما صددرصد به یک NPE نیاز داشتید، باید به صراحت آن را درخواست کنید:

چرا کاتلین مقصد نهایی است؟

17. Lambda های بهتر

سیستم فوق العاده ی Lambda که در کمال هماهنگی بین خوانایی و ایجاذ وجود دارد، برساخته ی انتخاب های طراحی هوشمندانه است. اول از هرچیز ترکیب(syntax) آن است که بسیار ساده است:

چرا کاتلین مقصد نهایی است؟

و نقاط قوت دیگر:

  • چینش پرانتزها می تواند جابه جا یا حذف شوند، اگر  lambda آخرین و تنهاترین استدلال یک چینش باشد.
  • اگر شما نخواهید استدلال یک تک-استدلال-LAMBDA را اعلان کنید، می توانید به وضوح در زیر نام it مشاهده نمایید.

تلفیق این موارد در نهایت موجب می شوند که سه خط زیر باهم برابر باشند:

چرا کاتلین مقصد نهایی است؟

این قابلیت به ما امکان می دهد که کدهای عملگر فشرده ای را بنویسیم. لطفا به تصویر پایین نگاه بیندازید:

چرا کاتلین مقصد نهایی است؟

سیستم lambda در کاتلین که با پسوندهای عملگر در هم آمیخته است، برای درست کردن DSL ایده آل است. پسوندهای عملگر در هم آمیخته با سیستم lambda در کاتلین باعث شده که این سیستم را برای طراحی DSL ها ایده آل کند. برای دیدن یک نمونه‌ی موفق DSL می‌توان به Anko اشاره کرد که موجب رشد و ترقی اندروید می شود:

چرا کاتلین مقصد نهایی است؟

18. پشتیبانی از IDE

اگر قصد استفاده از کاتلین را داشته باشید، انتخاب های زیادی در پیش روی شماست، اما ما قویا InteliJ را پیشنهاد می کنیم  که همراه کاتلین است، زیرا سازندگان این IDEA همان کسانی هستند که کاتلین را برای شما به ارمغان آورده اند.
بعنوان یک مثال ساده اما هوشمندانه، زمانی که شما بخواهید کدهای جاوا را از سایت stack overflow کپی پیست کنید، با چنین پیغامی روبه رو خواهید شد:

چرا کاتلین مقصد نهایی است؟
نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

0 نظر ثبت شده است
میهمان
omid (26 فروردین 1398 | 19:30)

سلام
من همیشه با جاوا کار کردم برای برنامه نویسی اندروید – الانم تو این چند ماه اخیر بیشتر با این زبان کار کردم – ولی یه چند روزه که تصمیم گرفتم برم سمت کاتلین ولی خب تردید دارم – چون خیلی رو زبان جاوا وقت گذاشتم – حالا میترسم که کوچ کنم به کاتلین زحمت هام هدر بره یا شایدم نه-
چه پیشنهادی برای من دارید…

ارسال پاسخ
لرن فایلز
لرن فایلز
4093 روز همراهی
لرن فایلز (27 فروردین 1398 | 09:06)

سلام بر شما. هرگز اینجوری مقایسه نکنید، شما اگر جاوا رو یاد گرفتید خیلی هم عالی هست چون جاوا زبانی نیست که به این راحتی ها بشه گفت کنار رفت یا ….، بعد هم این رو بدونید که زمانی که شما یک زبان اونم مثل جاوا رو مسلط هستید هر زبان دیگری رو به سرعت یاد میگیرید، پس من پیشنهادم اینه که می تونید به کاتلین به راحتی سوئیچ کنید و هیچ ضرری نکردید بلکه فایده کردید و همچنین با جاوا هم پروژه ها رو ادامه بدید تا در آینده در صورت الزام گوگل سوئیچ کنید.

ارسال پاسخ

نوشته های دیگر در دسته بندی برترین‌های بلاگ

راز موفقیت در تسلیم شدنه!

راز موفقیت در تسلیم شدنه!

راز موفقیت در تسلیم شدنه! شاید تو نگاه اول بگی این چه حرف چرتیه ولی مقاله رو تا ته بخون
دانشگاه منو برنامه نویس کرد ؟!

دانشگاه منو برنامه نویس کرد ؟!

فارغ و التحصیل برنامه نویسی از دانشگاه باشیم و یا متخصص به صورت دانش تجربی؟ کدوم درسته؟
برنامه ریزی کافیست ، عمل کنیم !

برنامه ریزی کافیست ، عمل کنیم !

عمل کردن بدون برنامه ریزی نتیجه بهتری از برنامه ریزی بدون عمل خواهد داشت
آموزش هک

آموزش هک