متن خبر

انتزاع در کدنویسی چیست؟ راهنمای مبتدیان

انتزاع در کدنویسی چیست؟ راهنمای مبتدیان

شناسهٔ خبر: 458825 -




من اخیراً با چندین کدنویس جدید ملاقات کرده‌ام و با آنها صحبت کرده‌ام، و یک اشتباه رایج را می‌بینم که همه آنها مرتکب می‌شوند.

آنها انتزاعات را در کد خود یا در یادگیری خود نمی پذیرند و درک نمی کنند.

اما انتزاعات چیست؟ و چرا اهمیت دارند؟

بیایید شیرجه بزنیم!

انتزاع چیست؟

در کدنویسی، توسعه دهندگان اغلب از انتزاعات برای ساده کردن یک سیستم استفاده می کنند. انتزاع ها راهی برای پنهان کردن جزئیات پیچیده از کاربر نهایی و تلاش برای ساده کردن هر کاری است که می خواهید انجام دهید.

اما انتزاع ها را می توان در مواردی بیش از کد استفاده کرد، پس اجازه دهید با یک مثال شروع کنیم.

انتزاعات دستگاه قهوه

تصور کنید در حال ایجاد دستگاهی برای تهیه قهوه برای کاربران خود هستید. دو رویکرد می تواند وجود داشته باشد:

چگونه آن را با انتزاع ایجاد کنیم

دکمه‌ای داشته باشید که او میگوید «قهوه درست کن»

چگونه آن را بدون انتزاع ایجاد کنیم

دکمه ای داشته باشید که روی آن نوشته شود: «آب را بجوشانید»

دکمه‌ای داشته باشید که او میگوید «آب سرد را به کتری اضافه کنید»

دکمه ای داشته باشید که می گوید: «1 قاشق قهوه آسیاب شده را به یک فنجان تمیز اضافه کنید»

دکمه‌ای داشته باشید که او میگوید «فنجان کثیف را تمیز کنید»

و همه دکمه های دیگر

آیا می توانید ببینید که چگونه وقتی از انتزاع استفاده می کنیم، ما انتظار نداریم که کاربر بداند دستگاه چگونه قهوه درست می کند؟ اما در دستگاه بدون انتزاع، کاربر باید بداند که هر دکمه را به چه ترتیبی فشار می دهد، که کاربر را مجبور می کند بفهمد قهوه چگونه درست می شود.

چرا باید جزئیات خود را انتزاع کنید

وقتی از انتزاعات به خوبی استفاده می کنیم، سیستم/پایه کد/وظیفه و غیره خود را می سازیم درک و استفاده بسیار آسان تر است. با پنهان کردن جزئیات پیچیده در یک ماژول، کلاس، نمونه اولیه یا عملکرد، ما می توانیم یک راه بسیار ساده برای انجام کارهای پیچیده ایجاد کنیم.

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

توسعه دهندگان در همه زبان ها و در تمام اکوسیستم ها از انتزاعات استفاده می کنند. تیم NodeJS شما را مجبور نمی کند که بدانید چگونه 0 و 1 را در هارد دیسک تغییر دهید تا متن را در یک فایل ذخیره کنید - شما به سادگی می توانید تابع writeFile فراخوانی کنید.

وقتی از انتزاع استفاده می کنیم، اساساً شخصی را که از کد ما استفاده می کند مجبور نمی کنیم که نگران جزئیات پیاده سازی باشد. آنها فقط می توانند عملکرد را فراخوانی کنند و پاسخ خود را دریافت خواهند کرد - آنها لازم نیست نگران این باشند که عملکرد "زیر کاپوت" چه می کند.

این نقطه قوت انتزاع است جزئیات در کد شما وجود دارد.

من قبلاً در شرکتی کار می‌کردم که پایه کد آن 4 میلیون خط بود. آیا می توانید تصور کنید که یک توسعه دهنده ارشد از من انتظار دارد که همه عملکردها را درک کنم؟ هر ماژول؟ هر کلاس؟ من هرگز یک تغییر واحد را در آن پایگاه کد ادغام نمی کردم اگر این کار را می کردم!

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

یک انتزاع نمونه

بیایید سعی کنیم این را با یک مثال کد توضیح دهیم.

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

const res = bankAccountBalance - 1200

const res = bankAccountBalance – 1500

const res = bankAccountBalance - 1400

چرا سالی یک بار اعداد تصادفی را از موجودی بانکی همه کم می کنیم؟! این خیلی نامشخص است، هیچ نظری در توضیح این موضوع وجود ندارد؟! چه اتفاقی می افتد؟ آیا این یک خطا است؟

حالا تصور کنید که این ویژگی واضح تر بود و این کار را انجام می داد:

 const minusFeesInUSDollars = (bankAccountBalance ) => { // Our yearly fees for this account are 1200 (USD) const YEARLY_FEES = 1200; return bankAccountBalance - YEARLY_FEES; } const minusFeesInGBPounds = (bankAccountBalance ) => { // Our yearly fees for this account are 1500 (GBP) const YEARLY_FEES = 1500; return bankAccountBalance - YEARLY_FEES; } const minusFeesInEuros = (bankAccountBalance ) => { // Our yearly fees for this account are 1400 (EUR) const YEARLY_FEES = 1400; return bankAccountBalance - YEARLY_FEES; }

مثال کامل نیست، زیرا می‌توانیم مقداری تکرار را در این توابع حذف کنیم - اما منطق را به "چیزی"، در این مورد، یک تابع انتزاع کرده‌ایم.

چرا باید از انتزاعات استقبال کنم؟

من انتزاعات را تاکنون در زمینه کد توضیح داده ام، اما می تواند برای سفر یادگیری شما نیز کاربرد داشته باشد.

اگر نتوانید انتزاعات را بپذیرید (حداقل زمانی که شروع به کار می کنید) هرگز نمی توانید به عنوان یک توسعه دهنده درک کنید و عالی باشید.

چرا این طور است؟

خوب، چون همیشه یک انتزاع در زیر شما وجود دارد، وسوسه خواهید شد که سعی کنید و درک کنید. این در نهایت شما را ناامید می کند، بر شما غلبه می کند و یادگیری شما را از بین می برد.

در اینجا یک مثال است.

    شما شروع به یادگیری React می کنید.

    این خوب پیش می رود! من شروع به یادگیری چند بیت اول کدم می کنم و بعضی چیزها را روی صفحه کامپیوترم رندر می کنم. این به خوبی پیش می رود. 😊

    یاد می گیرید که React یک کتابخانه جاوا اسکریپت است.

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

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

    خوب این در حال حاضر پیچیده تر شده است. موتورهای جاوا اسکریپت، API های شخص ثالث، زمان های مختلف اجرا وجود دارد. این داره گیج میشه

    شما سعی می کنید بفهمید که چگونه یک موتور کد جاوا اسکریپت را تفسیر می کند.

    باشه! پس کد جاوا اسکریپت شما توسط یک نرم افزار کدگذاری شده در C++ اجرا می شود. C++ چیست؟

    شما شروع به یادگیری C++ می کنید.

    این سفر یادگیری دیگر به خوبی پیش نمی رود. این شروع به بسیار گیج کننده و طولانی تر می کند.

    یاد می گیرید که C++ صرفاً پسوندی از C است.

    روی زمین C چیست؟!

... و غیره.

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

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

چگونه از انتزاعات استقبال می کنید؟

همانطور که در حال یادگیری هستید، باید با عدم درک کامل برخی چیزها در سفر یادگیری خود راحت باشید.

شما فقط می توانید این دانش را "انتزاعی" کنید و به چیزهایی که مربوط به کاری که در حال حاضر انجام می دهید بچسبید.

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

یک روز شما می توانید در انتزاعات کاوش کنید

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

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

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

هنگامی که در سفر یادگیری خود احساس راحتی کردید و می خواهید مهارت های خود را بهبود بخشید، سپس یاد بگیرید که انتزاعات خود چگونه کار می کنند .

نتیجه

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

اگر مایلید بیشتر بخوانید، مقالاتم را اینجا توییت می کنم.

خبرکاو

ارسال نظر




تبليغات ايهنا تبليغات ايهنا

تمامی حقوق مادی و معنوی این سایت متعلق به خبرکاو است و استفاده از مطالب با ذکر منبع بلامانع است