در برنامه نویسی جاوا اسکریپت ، ما با دو مفهوم Compose و Pipe روبه رو هستیم. این دو مفهوم، جزء مفاهیم قدرتمند در برنامه نویسی Functional Programming یا تابع محور هستند. در زبان JavaScript ، تابع ها نقش بسیار مهمی دارند و استفاده از آن ها به شما کمک می کند که برنامه ای کاملا حرفه ای و کاربردی بنویسید. برای کسانی که تازه کار هستند، درک مفاهیم Compose و Pipe در جاوا اسکریپت کمی دشوار است. پس تا انتهای این مقاله با ما همراه باشید تا شما را با این دو مفهوم مهم آشنا کنیم.

منظور از برنامه نویسی تابع محور چیست ؟

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

مفهوم Compose چیست ؟

مفهوم Compose ساختاری را شامل می شود که در آن، چند تابع ساده را با یکدیگر ترکیب می کنند تا یک تابع پیچیده تر ساخته شود. در ترکیب توابع، خروجی هر تابع را به تابع بعدی انتقال می دهند. این کار شبیه به همان چیزی است که در ریاضیات در بخش ترکیب توابع داریم. زمانی که خروجی یک تابع، به عنوان ورودی تابع دیگر به حساب می آید مانند G(F(x)) که در آن x ورودی تابع F است و خروجی تابع F، ورودی تابع G می شود. با این کار شما می توانید بر روی تعداد خاصی از ورودی ها که در نتیجه اجرای F(x) به وجود آمده اند، G(x) را اجرا کنید.

برای فهم بهتر این مسئله به مثال زیر توجه کنید :

می خواهیم تمام حروف یک اسم را تبدیل به حروف کوچک کنیم و فاصله بین آن ها را حذف کنیم و بعد نتیجه را درون یک متغیر به نام H1 بریزیم :

روش کد نویسی بالا یک روش غیر تابعی است و در صورت پیچیده تر شدن برنامه و زیاد شدن خط های کد نمی توان آن را به راحتی عیب یابی کرد. در مفاهیم Compose و Pipe در جاوا اسکریپت برای حل این مثال با روش کد نویسی تابعی باید به صورت زیر عمل کرد :

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

استفاده از تکنیک Compose در Functional Programming با دو مشکل روبه رو است. اول این که اگر تعداد توابع زیاد باشد، تعداد پرانتزها زیاد می شود و کد، ظاهر قشنگی نخواهد داشت و البته فهم آن نیز مشکل است.

دومین مشکل این است که برای درک کردن تابع باید آن را از راست به چپ بخوانیم که این کمی مشکل است. برای حل این مشکل در برنامه نویسی جاوا اسکریپت می توان از بخش کتابخانه آن به نام Lodash استفاده کرد تا کدی که نوشته ایم را به کدی ساده تر تبدیل کند.

مفهوم Pipe چیست ؟

معنی کلمه Pipe لوله کشی است و نحوه کار کردن آن به این شکل است که n تابع را می گیرد و آن ها را ترکیب می کند. در این روش، هر تابع با خروجی تابع قبل از چپ به راست فرا خوانده می شود و توابع با توجه به ترتیبی که دارند به عنوان ورودی تابع فرستاده می شوند. در این روش، کد خوانایی بیشتری دارد و نیازی به استفاده از پرانتزهای زیاد نیست. مثال زیر نمونه ای از کاربرد این مفهوم است :

همان طور که در مثال بالا مشاهده می کنید، خروجی تابع Trim به عنوان ورودی به String TolowerCase داده می شود و در نهایت از طریق WrapString فاصله های اضافه حذف خواهند شد. این روش کدنویسی بسیار ساده تر و قابل فهم تر است و می تواند برای برنامه های طولانی و پیچیده هم به کار رود.

سخن پایانی

برنامه نویسی جاوا اسکریپت هنری است که با یادگیری ترفندهای مختلف این زبان تکمیل می شود. اگر در حال حاضر یکی از متخصصین این زبان هستید و دوست دارید کدهای حرفه ای تر و خواناتری بزنید، بهتر است به سراغ تکنیک های Compose و Pipe بروید. این دو تکنیک به شما کمک می کنند که توابع مختلف را صدا بزنید و به جای اینکه خودتان دست به کار شده و کد را از ابتدا تا انتها بنویسید، می توانید از فانکشن هایی که دیگران برایتان آماده کرده اند استفاده کنید.