جاوااسکریپت برای پنج سال گذشته زبان برنامه نویسی اصلی من بوده است. من از برنامه نویسی در جاوااسکریپت لذت میبرم و تا همین اواخر ، هیچ دلیلی نمیدیدم که آن کنار بگذارم.
من عاشق طبیعت پویا جاوااسکریپت هستم. این به من اجازه میدهد تا من به سرعت راهحلهای جدید را پیادهسازی کنم. فکر من این بود که نوع declarations افزوده شده در تایپاسکریپت و بررسی نوع آن باعث میشود من کندتر و تولید کمتری داشته باشم.
اخیراً نظرم تغییر کرده است و در آخرین پروژههای خودم، مزایای تایپاسکریپت را درک کردم.
در این مقاله دلایل تغییر نگرش، درباره تایپاسکریپت را توضیح میدهم.
ــ چرا فکر میکنم بسیاری از پروژهها به جای جاوااسکریپت بهتر است از تایپاسکریپت استفاده کنند؟ چون از ویژگیهای آن سود بیشتری میبرند.
کار انفرادی
من فکر میکنم که جاوااسکریپت هنگام کار به تنهایی کافی است، اما برای تیمها بسیار مطلوب نیست. جاوااسکریپت برای توسعه سریع مناسب است. در هنگام کار انفرادی، درک کد برای دیگران دشوار نیست. این احتمال وجود دارد که شما به عنوان تنها نویسنده پایه کد بتوانید آن را به خوبی حفظ کرده و آن را تقویت کنید.
جاوا اسکریپت امکان توسعه سریع را تا حدودی فراهم میکند زیرا نیازی به نوشتن هیچ type یا interface ندارد. شما در نوشتن تایپ هیچ وقت ”هشدار“ دریافت نمیکنید.
در گذشته ، من با استفاده از vanilla جاوااسکریپت، پایگاههای کدی قابل توجهی را پیادهسازی کردهام و سالهاست که آنها را حفظ کردم. این خوب عمل کرده است زیرا من تنها کسی هستم که روی این پروژهها کار کرده بودم.
کار تیمی
من به تازگی شروع به کار بر روی یک پایگاه کد عظیم جاوااسکریپت کردم که طی چندین سال توسط یک توسعه دهنده تألیف شده است. وظیفه من اجرای یک پیشرفت کوچک بر روی آن بود اما قادر به انجام آن نبودم زیرا درک من از آنچه که در این کد اتفاق میافتد، خیلی سخت بود.
توسعه دهنده اصلی بدیهی بود که هنوز قادر به ایجاد تغییراتی در آن بود ، اما برای من کد چندان معنایی نداشت. سبک کدنویسی یا عدم وجود آن باعث آسیب به مغز من میشد.
ما تصمیم گرفتیم برای استفاده از تایپاسکریپت ، مهاجرت این پروژه را شروع کنیم. ما دو منطقه را شناسایی کردیم که بیشترین سود را از حاشیه نویسیهای نوع دارند:
- Interface برای انواع پیامهای این پروژه، از یک سیستم پیام رسانی استفاده میکند و چندین نوع پیام مختلف بین ماژولها و توابع ارسال و دریافت میشود.
- Interfaceبرای انواع DB درست مانند شی پیام، سوابق DB نیز بین ماژولها و توابع منتقل میشوند.
ما این روابط را اضافه کردیم تا تمام توابعی که این اشیاء را در امضاهای خود دارند به عنوان پارامتر یا مقادیر برگشتی نوع خود را اعلام نمایند. اینtype declarations هستند که درک کد را آسانتر میکنند. بلافاصله میتوانید type declarations را مشاهده کنید که چه دادههایی به تابع ارسال میشود. Interfaceها ساختار و نوع پارامترها پیچیده را توصیف میکنند و دیگر نیازی به بازرسی کد یا اجرای تابع یا آزمایش واحد نیست تا مشخص شود که این اشیاء پیچیده از چه قسمتهایی تشکیل شده است.
درک مشترک از کد هنگامی که به عنوان تیم کار میکنید بسیار مهم است. اطلاعات نوع اضافه شده باعث افزایش درک میشود.
خطای کمتر
نوع اطلاعات نیز توسط کامپایلر تایپاسکریپت مصرف و بررسی میشود. کامپایلر هنگامی که کد شما از امنیت برخوردار نباشد به شما میگوید.
این یک مزیت کلاسیک است که بررسی نوع به ارمغان می آورد: به وجود آمدن اشکالات در مراحل توسعه. به جای اینکه مشتریان در هنگام تولید اشکالات برنامه شما برطرف کنند.
Airbnb با افزوده شدن به تایپاسکریپت به روند توسعه آنها، از کاهش 38درصدی اشکالات خبر داد.
کامپایلر تایپاسکریپت دارای یک گزینه_strict_است که امکان کنترل دقیق تر نوع را فراهم می کند. با فعال کردن گزینه مشکلات احتمالی بیشتری را نشان خواهد داد.
احتمالاً بهتر است هنگام مهاجرت از یک پروژه جاوااسکریپتی موجود و برای استفاده از تایپاسکریپت از حالت سخت استفاده نکنید. در پروژه مهاجرت تایپاسکریپت ما با بررسیهای غیرفعال شده سخت شروع به کار کردهایم که این امکان را برای ما فراهم میکند که ساخت را پشت سر بگذاریم تا برنامه با تلاش کمتری اجرا شود. اگر تصمیم بگیریم که بررسیهای دقیق را انجام دهیم، قبل از اینکه کامپایلر به اندازه کافی خوشحال باشد برای تهیه یک برنامه قابل اعتماد، کار بیشتری باید انجام شود.
تایپاسکریپت به صورت رایگان ارائه نمیشود. مقداری هزینه در رابطه با استفاده از آن وجود دارد:
- تلاش برای نوشتن یادداشتهای نوع و حفظ آنها
- حاشیه نویسی را به پایه کد اضافه کنید.
لازم به ذکر است که صنعت ما از تکنیکهای مختلفی برای گرفتن اشکالات استفاده میکند. تایپ اسکریپت و بررسی نوع استاتیک آن تنها یکی از این تکنیکها است. در اینجا برخی از شیوههای توصیه شده وجود دارد: توسعه تست محور(TDD)، بررسی کد، بررسی طراحی و پوشش.
اگر از TDD و بررسیهای کد استفاده میکنید، احتمالاً در بازیابی زود هنگام اشکالات کارآمد هستید. در این حالت، افزودن تایپاسکریپت تأثیر قابل توجهی در بهبود کیفیت نخواهد داشت. شما باید وضعیت خود را در نظر بگیرید و سعی کنید تعیین کنید که آیا مزایای تایپاسکریپت هزینههای بیشتری را اضافه میکند یا خیر.
برنامه نویسی شیء گرا در مقابل برنامه نویسی تابعی
در طول دو سال گذشته ، من یاد گرفتهام که از برنامه نویسی تابعی در پروژههای جاوااسکریپتی خود استفاده کنم. کمی نگران بودم که تایپاسکریپت مناسب برنامه نویسی تابعی نباشد. فکرم ناآگاهانه بود که تایپاسکریپت کدهای من را شبیه به جاوا میکند، جایی که همه چیز مبتنی بر کلاسها است و همه چیز باید یک Object باشد.
معلوم است که نگرانیهای من غیرموجه بوده است. تایپاسکریپت در بالای جاوااسکریپت است و هر کاری که با جاوااسکریپت انجام دهم میتوانم در تایپاسکریپت نیز انجام دهم. من مجبور نیستم از کلاسها استفاده کنم، یا برای همه متغیرها انواع را اعلام کنم. تایپ اختیاری است و میتواند در صورت نیاز مناسب باشد.
چه زمانی باید از تایپاسکریپت استفاده کنیم؟
برخی از موارد زیر که بهتر است از تایپاسکریپت استفاده کنیم:
- شما یک مدل داده غنی دارید که اشیاء داده بین ماژولها و توابع منتقل میشوند.
- شما بیش از یک توسعه دهنده دارید که روی این پروژه کار میکند.
- شما در حال ایجاد یک کتابخانه منبع باز هستید.
- کتابخانهها به تایپاسکریپت احتیاج دارند تا افراد بتوانند با استفاده از پایههای کد از آن استفاده کنند.
چرا از تایپاسکریپت استفاده میکنیم؟
- چک کردن نوع ، اشکالات را زودتر آشکار میکند.
- این کار تیمی را با افزایش درک و قابلیت حفظ کد امکان پذیر میکند. به همین دلیل باعث میشود تا اعضای تیم جدید نیز سرعت بیشتری کسب کنند.
چه زمانی بهتر است از جاوااسکریپت استفاده کنیم؟
بعضی مواقع وجود دارد که من از تایپاسکریپت استفاده نمیکنم بلکه به جای آن از جاوااسکریپت استفاده میکنم:
- شما جاوااسکریپت را تجربه کردهاید، توسعه دهندگانی که از TDD و بررسی کد استفاده میکنند.
- نمونههای اولیه با جاوااسکریپت به سرعت توسعه مییابند.
- اسکریپتهای یکبار مصرف، مانند اسکریپتهای مهاجرت و غیره، بسیار مناسب است که با جاوااسکریپت انجام شود.
برای آشنایی بیشتر میتوانید از دورهی جاوااسکریپت و تایپاسکریپت سایت راکت استفاده نمایید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید