مقالات

برنامه نویسی AHA 💡


سخنرانی من را تماشا کنید: برنامه نویسی AHA

DRY (مخفف “تکرار نشود”)،
یک اصل نرم افزار قدیمی است که ویکی پدیا آن را به صورت زیر خلاصه می کند:

همه دانش ها باید یک دانش واحد، بدون ابهام و معتبر داشته باشند
ارائه در سیستم

این به طور کلی یک روش خوب است که من به طور کلی در آن مشترک هستم (البته کمتر
جزم اندیشانه از این تعریف به نظر می رسد تشویق می کند). بزرگترین مشکلی که دارم
دارای کد تکراری (معروف به
کپی/پیست، اساساً نقطه مقابل آن است DRY) یک خطا را در یکی تشخیص می دهد
مکان، آن را برطرف کرد، سپس متوجه شد که همان باگ جای دیگری است و باید برطرف شود
آن و آنجا

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

مفهوم دیگری وجود دارد که مردم به آن می گویند WET برنامه نویسی که
یعنی “همه چیز را دوبار بنویس”. این نیز جزمی و تمام شده است
تجویزی کانلین دوربین
این را اینگونه تعریف کرده است:

ممکن است از خود بپرسید “آیا قبلاً این را ننوشته ام؟” دو بار اما هرگز
سه

در همان پایگاه کدی که در بالا ذکر کردم، مقداری انتزاع بیش از حد وجود داشت
حتی از تکرار مضرتر بود. این کد AngularJS برای تعدادی نیز بود
کنترلرهای AngularJS، کد ارسال شده است this به تابعی که می تواند
روش ها و ویژگی های میمون پچ در this به شیوه ای بهبود بخش
یک نمونه کنترل کننده با قابلیت های خاص. به نوعی شبیه یک شبه ارثی I
حدس می زنم فوق العاده گیج کننده بود، دنبال کردنش سخت بود و من از انجام آن وحشت داشتم
تغییرات در این ناحیه از پایگاه کد.

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

AHA (تلفظ «آها!» به گونه ای که گویی تازه کشف کرده اید) مخفف I است
دریافت شده از
شر اسکارلت، یعنی

از انتزاعات عجولانه پرهیز کنید

طرز فکر من در مورد این اصل به زیبایی توصیف شده است
سندی متز که
نوشت:

تکرار را به انتزاع کاذب ترجیح می دهند

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

در اینجا یک اصل مرتبط مهم دیگر است که می خواهم اضافه کنم:

ابتدا برای تغییر بهینه سازی کنید

من فکر می کنم کلید این است که ما نمی دانیم آینده کد چگونه خواهد بود. ما توانستیم
هفته ها را صرف بهینه سازی کد برای عملکرد یا پیدا کردن بهترین API کنید
انتزاع جدید ما، فقط برای اینکه روز بعد متوجه شویم که یک انتزاع نادرست ساخته ایم
مفروضات و رابط برنامه نویسی برنامه (API) به بازنگری کامل یا عملکردی که کد است نیاز دارد
نوشته شده برای دیگر لازم نیست. ما به طور قطع نمی دانیم. تمام چیزی که واقعاً می توانیم باشیم
مطمئناً همه چیز تغییر خواهد کرد و اگر هرگز تغییر نکند، ما هم تغییر نخواهیم کرد
شما به هر حال روی کد ضربه می زنید، پس چه کسی اهمیت می دهد که چگونه به نظر می رسد؟

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

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

با این حال، اگر زود انتزاع کنید، فکر می کنید که تابع یا جزء کامل است
برای مورد استفاده شما و بنابراین شما فقط کد را خم می کنید تا مناسب مورد استفاده جدید شما باشد. این
چندین بار ادامه می یابد تا اینکه انتزاع اساساً کل برنامه شما شود
ج if عبارات و حلقه ها 😂😭

چند سال پیش برای بررسی پایگاه کد یک شرکت استخدام شدم و از یک ابزار استفاده کردم
به نام jsinspect برای شناسایی
تکه‌هایی از کد کپی/پیست شده برای نشان دادن قابلیت‌های انتزاعی. داشتند
یک دسته از کدهای تکراری و از دیدگاه من به نظر واضح بود
انتزاعات چگونه باید باشند

من فکر می کنم غذای بزرگ است در مورد “برنامه نویسی AHA” این است که شما نباید باشید
درباره زمانی که شروع به نوشتن انتزاع می کنید، اما به جای آن بنویسید، جزم اندیشی است
انتزاع زمانی که آن را احساسات به درستی و از تکرار کد در حالی که نترسید
شما به آنجا می رسید

این یک رویکرد سنجیده و عملگرایانه به اصول نرم افزار است
مهم است. به همین دلیل آن را ترجیح می دهم AHA تمام DRY یا WET. این به این منظور کمک می کند که مراقب انتزاعات خود باشید بدون اینکه قوانین سخت و سریعی درباره زمان ارائه دهید
یا انتزاع برخی از کدها در یک تابع یا ماژول خوب نیست.

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


Source link

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

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

همچنین ببینید
بستن
دکمه بازگشت به بالا