برنامه نویسی

نوشتن کلاس ها و ماژول های بهتر جاوا اسکریپت

کلاس‌ها چیزی هستند که من یک دقیقه طول کشید تا بفهمم چرا در مقایسه با استفاده ساده از حروف شیء به آنها نیاز دارم.


let person={
  name:"kwame";
  age:45
}

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

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

اصل باز و بسته

اگر بیش از 3 روز است که جاوا اسکریپت می نویسید، قبلاً از این اصل استفاده کرده اید. تکان دهنده درست است؟ خب، من حدس می‌زنم این نکته جالب در مورد جاوا اسکریپت است. تعریف مورد علاقه من از این اصل توسط برتراند مایر است.
“یک مصنوع نرم افزاری باید برای توسعه باز باشد اما برای اصلاح بسته شود.”

بیایید کلمات کلیدی این بیانیه را بشکنیم.

  1. مصنوع نرم افزاری ممکن است به معنای چیزهای زیادی باشد، اما در این زمینه یک مصنوع نرم افزاری را به عنوان یک ماژول یا یک کلاس در نظر بگیرید.

  2. برای تمدید باز شود. این به طور کلی به این معنی است که کلاس یا ماژول شما باید به یک کاربر اجازه دهد (منظورم از کاربر برنامه نویسی است که از آن کلاس یا ماژول استفاده می کند) برای ایجاد ویژگی های جدید برای برنامه خود با استفاده از توابع یا متدهای کلاس ها یا ماژول ها.

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

خلیل استملر این موضوع را با این جمله بسط داد
“کد خود را به گونه ای بنویسید که اگر می خواهید عملکرد جدیدی اضافه کنید، کد موجود را بازنویسی نکنید.”

اگر کاربر بخواهد نحوه پیاده سازی یک متد خاص در کلاس والد را تغییر دهد، باید به سادگی آن متد را لغو کند.
Overriding به سادگی به معنای بازنویسی یک متد از کلاس والد به کلاس دختر است.
به عنوان مثال، اجازه دهید من یک کلاس Animal ایجاد کنم

Class Animal{
 walk(){
 console.log("Hop")
 }
 eat(){
 console.log("Chew very loudly")
 }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حیوان ما دو رفتار دارد. خوردن و راه رفتن.
جوجه من این دو رفتار را دارد اما نحوه انجام این دو رفتار مرغ من متفاوت است. اولاً نمی پرد و زیاد بلند نمی جود.
خوب با تغییر دادن کلاس حیوانات من برای مطابقت با این خصوصیات مرغ، همه چیز خوب است. اما این بهترین رویکرد نیست زیرا اگر بخواهم حیوان دیگری مثلا یک توله سگ را اضافه کنم چه؟ ما نمی توانیم توله سگمان ویژگی های یک مرغ را نشان دهد.
اینجا جایی است که اصل باز-بسته به عنوان شوالیه و عشق درخشان ما ظاهر می شود تا ما را از کد بد نجات دهد.
کلاس مرغ به سادگی ویژگی های حیوان ما را نادیده می گیرد. به این ترتیب اصل باز/بسته شکسته نخواهد شد.

class Chicken extends Animal{
 walk(){
 console.log("on two legs");
 }
 eat(){
 console.log("crow after eating a seed")
 }
 sleep(){
 console.log("on the roof")
 }
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

کلاس مرغ قادر به اضافه کردن ویژگی های جدید بدون نیاز به تغییر کلاس حیوانات بود.

بستن افکار

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

نوشته های مشابه

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

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

دکمه بازگشت به بالا