رفتن به محتوا

---

title: چک‌لیست: اول کدوم عددا رو ببری تو config

slug: config-checklist

lang: fa

published: 2026-11-07

words: 408

lines: 67

size: 3.6 KB

read: 3 min read

---

چک‌لیست: اول کدوم عددا رو ببری تو config

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

این ترتیبیه که من عددا رو از کد درمیارم، با مثال‌های واقعی از config همین سایت.

۱. اول از همه secretها

پسورد، API key و کلیدهای امضا هیچ‌وقت توی کد یا فایل YAML نیستن. فایل YAML فقط اسم متغیر محیطی رو می‌نویسه و اگه نباشه برنامه بالا نمیاد:

yaml
django:
  secret_key: ${DJANGO_SECRET_KEY}
database:
  url: ${DATABASE_URL}

۲. هرچی بین سیستم‌ها فرق می‌کنه

دامنه، URLها، hostها و جای ذخیره‌ی فایل روی لپ‌تاپت با سرور فرق دارن. فقط وقتی default بذار که امن باشه:

yaml
app:
  site_url: ${SITE_URL}
storage:
  backend: ${STORAGE_BACKEND:-local}

۳. محدودیت‌ها و timeoutها

retry، timeout، حجم آپلود و rate limit همون عددایی‌ان که آخرش دستکاریشون می‌کنی. واحد رو بذار توی اسم کلید تا کسی حدس نزنه 10 ثانیه‌ست یا دقیقه:

yaml
auth:
  access_token_minutes: 15
  login_failures_limit: 5
  login_window_minutes: 15
uploads:
  video:
    max_mb_s3: 300

۴. عددی که یه فایل می‌نویسه و یه فایل دیگه می‌خونه

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

۵. تنظیمات محصول

مدت cache، تعداد آیتم‌های هر صفحه، روشن و خاموش کردن یه قابلیت. بدون دست زدن به منطق عوضشون کن:

yaml
api:
  revalidate_seconds: 60

سه تا قانون که config رو تمیز نگه می‌داره

  • چکش کن. schema من سخت‌گیره: کلید ناشناخته یا جاافتاده برنامه رو با مسیر همون کلید متوقف می‌کنه. یه غلط تایپی بلند داد می‌زنه، نه اینکه بی‌صدا default بخونه.
  • فقط یه loader. فقط loader کانفیگ متغیرهای محیطی رو می‌خونه. بقیه‌ی کد یه آبجکت config تایپ‌دار می‌گیره.
  • یه base، override کوچیک. base.yaml همه‌چیز رو داره و production.yaml فقط چیزی رو عوض می‌کنه که فرق داره، مثل خاموش کردن API docs.

چی توی کد می‌مونه

هر عددی config نیست. عددی که هیچ‌وقت عوض نمی‌شه و فقط کنار منطق خودش معنی داره، مثل تعداد روزای هفته، یه constant اسم‌دار توی کد می‌مونه. config واسه عددایی‌ه که قراره عوضشون کنی.

ریپوی خودتو چک کن

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

fa3 min read