در این مقاله قصد داریم تا به بررسی برنامه نویسی تابعی (fp) و برنامه نویسی شی گرا (oop) در جاوا اسکریپت و مقایسهی این دو با هم بپردازیم. البته که نیاز نیست تنها از یکی از آنها استفاده کنیم و میتوانیم با ترکیب هر دو الگو نیز به نتایج خوبی برسیم. برای مثال میتوان به کتابخانهی React اشاره کرد که که هم از class component و هم از stateless component که همان functional component ها هستند، بهره میبرد؛ البته پیش از معرفی کردن hook ها!
برنامه نویسی شیگرا در برابر برنامه نویسی تابعی
برنامه نویسی شیگرا یا object oriented کد را به مانند یک واحد (unit) در نظر میگیرد. در این نوع برنامه نویسی آبجکت یا واحد شامل تمامی اطلاعات و عمکردهای مورد نیاز ما است. دادههایی که در واحد ما وجود دارند استیت (state) یا اتریبیوت (attribute) نام دارند. عمکردهایی که بر اساس استیت رخ میدهند نیز متد (method) نام دارند.
پایههای برنامه نویسی شیگرا:
- Encapsulation (کپسولهسازی)
- Abstraction (انتزاع)
- Inheritance (وراثت)
- Polymorphism (چندریختی)
اما برنامه نویسی فانکشنال دادهها و عملکردها را مجزا از یکدیگر میبیند و این دید در راستای پیشگیری از side effect (اثر جانبی) و نوشتن تابعهای خالص (pure functions) است. در واقع در این نوع برنامه نویسی توابع هیچ گونه تغییری در دنیای بیرونی خود ایجاد نمیکنند و مقادیر بازگشتی هر کدام از آنها کاملا وابسته به آرگومانهای ورودی آنهاست.
پایههای برنامه نویسی تابعی:
Pure functions (توابع خالص)
HOF (higher order functions) (توابع مرتبه بالا)
Referential transparency (شفافیت مرجع)
شما در این نوع برنامه نویسی میتوانید با ترکیب pure function و composeبه نتایج بسیار خوبی برسید.
هر دو الگوی برنامه نویسی شیگرا و برنامه نویسی تابعی الگوهایی برای رفع مشکلات مرسوم هستند تا مدیریت کد ما را نیز آسانتر کنند.
- واضح و پایدار: oop و fp باعث نظم بخشیدن به کد شما میشوند تا در نهایت برای اشخاص دیگر نیز کدی تمیز، قابل فهم و قابل تغییر داشته باشید.
- گسترش آسان: این الگوها باعث اسان شدن گسترش پروژههای رو به رشد میشود که چندین توسعهدهنده روی آنها کار میکنند.
- نگهداری آسان: این دو روش برنامه نویسی باعث تمیز شدن کدهای شما میشود که در نتیجه باعث افزایش قابلیت نگه داری کدها و سهولت در افزودن قابلیتهای جدید به آنها میشود.
- بهرهوری بهتر از حافظه: در برنامه نویسی شی گرا مفهوم وراثت و در برنامه نویسی تابعی مفهوم closure را داریم که باعث افزایش کارآمدی حافظه برنامه شما میشود.
- DRY: Do not repeat yourself. اگر این الگو را به درستی پیاده کنید، باعث کاهش کدهای تکراری شما میشود. این اتفاق در شیگرایی با استفاده از وراثت و در تابعی با استفاده از تابعهای reusable رخ میدهد.
تفاوت fp و oop
Fp برای انجام عملکردهای زیاد بر روی دادهها، مناسب است در حالی که oop برای انجام عمکردهای اندک بر روی دادهها مناسب است.
Fp در اصطلاح stateless است؛ به این معنا که هر بار استیت برنامه را تغییر نمیدهد. ولی oop در اصطلاح statefull است؛ به این معنا که متدهای آن باعث تغییر استیت میشوند.
در FP باید توابع pure یا خالص داشته باشیم که هیچ اثر جانبی یا side effect ای نداشته باشند و این در صورتی است که در oop اثرات جانبی مانند تغییر استیت برنامه را داریم.
Fp حالت declarative یا اعلانی دارد و متمرکز بر هدفیست که باید انجام بگیرد اما oop حالتimperative دارد و متمرکز بر چگونگی انجام کارهاست.
شی گرایی یا تابعی؟
- اگر شما دادههای کمی دارید و قصد انجام عملیاتهای متعدد اما کوچک بر روی آنها نیز دارید، بهتر است از برنامه نویسی تابعی (fp) استفاده کنید. این نوع برنامه نویسی عملکرد خوبی را به همراه دارد و شما میتوانید این برنامهها را به شکل همزمان بر روی چند پردازنده اجرا کنید.
- اگر شما دادههای فراوانی دارید که میخواهید عملیاتهای اندکی بر روی آنها انجام دهید، بهتر است از برنامه نویسی شی گرا (oop) بهره ببرید.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید