متغیرهای محیطی (Environment variables) یکیاز طراحی اپلیکیشن مفاهیم مهم برای پیشرفتدهندگان نرم افزار میباشد. آنان چیزی می باشند که ما روزمره از آن ها به کارگیری می کنیم. متغیرهای محیطی مزایای متعددی داراهستند که مشمول تنظیمات و امنیت نرم افزار میباشد.
متغیرهای محیطی بسیار خوب میباشند. با این هم اکنون تمامی چیز هزینهبر میباشد و این متغیرها در شرایطی که بیاحتیاط به کار گیری شوند، میتوانند تاثیرات مضری بر کد و اپهای ما داشته باشند.
متغیرهای محیطی
چنانچه متغیرهای محیطی به تایپ کردن کد ایمنخیس و تنظیمات ریلکسخیس اپلیکیشنها در فضاهای متفاوت به ما امداد مینمایند، چه طور ممکن میباشد چیز بدی باشند؟
متغیرهای محیطی سراسری و فرنگی می باشند، که از روش آن ها توسعه و گسترشدهندگان اپ کار کشته به تزریق تنظیماتها و مدیر آنان در مکانی می باشند که سازگاری آنها دشوارتر میباشد.
تمامی ما تحت عنوان گسترشدهنده می دانیم که حالتهای سراسری برای نرم افزارهای ما قادر است بد باشد. دراین نوشتهعلمی ما بر روی دو نقص مهم تمرکز خوا هیم کرد که بیشتر در هنگام راز و شغل داشتن با متغیرهای محیطی با آنان رو به رو میشویم:
عدم انعطافپذیری / آزمایشپذیری ضعیف
خوانایی / فهم و شعور کد
روش به کارگیری درست از متغیرهای محیطی
به صورت شبیه روش راز و فعالیت داشتن با متغیرهای سراسری یا این که الگوهای سراسری (مثل singleton) که در جای های بدی اجرا میشوند، سلاح گزینه عشق و علاقه ما تزریق تعلق میباشد.
قرار وجود ندارد دقیقا به عبارتی کاری باشد که ما برای تعلقهای کد اعمال میدهیم، البته اصول یکسان میباشد. به مکان به کارگیری بدون واسطه از متغیرهای محیطی (تعلقها) آنهارا در جای هایی که حقیقتا به کار گیری میگردند (callsites) تزریق میکنیم. این ارتباط را از \" callsites متعلق\" به \" callsites لازم\" معکوس فرمائید.
تزریق تعلق این مسائل را با به کار گیری از مفاد پایین حل مینماید:
به توسعه و گسترشدهندگان اذن میدهد تنظیماتها را به راحتی در حین آزمایش تزریق نمایند.
بهتر چطور این اصول را ایفا کنیم
ما از یک نمونه Node.js استعمال میکنیم تا ببینیم چطور خواهیم توانست یک کد مبنا را ریفکتور کنیم و متغیرهای محیطی جدا را از فی مابین ببریم.
بیاید بگوییم ما یک اپلیکیشن معمولی با یک endpoint داریم که برای تمامی TODOها در یک دیتابیس PostGres کوئری می زند. اینجا ماژول دیتابیس ما با متغیرهای محیطی غیروابسته آمده میباشد: