ساخت یک سیستم طراحی بدون بازسازی CSS

سیستم‌های طراحی اغلب در یک تله گرفتار می‌شوند.

شما با افزودن کلاس‌های کمکی (utility classes) شروع می‌کنید. گزینه‌های واکنش‌گرا (responsive) را اضافه می‌کنید. کمک‌کننده‌های چیدمان (layout helpers) را اضافه می‌کنید. به‌زودی، یک نحو (syntax) جدید می‌سازید. در نهایت دقیقاً همان کاری را انجام می‌دهید که CSS از قبل انجام می‌دهد.

تلاش برای جایگزینی CSS را متوقف کنید.

در عوض، لایه‌ای بالاتر از CSS بسازید. روی «هدف» (intent) تمرکز کنید.

توسعه‌دهندگان انعطاف‌پذیری می‌خواهند، اما انعطاف‌پذیری با پیچیدگی همراه است. بسیاری از سیستم‌ها تمام نقاط شکست (breakpoints) و گزینه‌های چیدمان را در معرض استفاده قرار می‌دهند. این کار خواندن نشانه‌گذاری (markup) را دشوار می‌کند. کد شما بیشتر از آنکه بگوید یک چیدمان چه کاری انجام می‌دهد، وقت خود را صرف توصیف نحوه ساخت آن چیدمان می‌کند.

سیستم به دلیل تلاش برای توصیف همه‌چیز، درک آن دشوار می‌شود.

تمرکز خود را تغییر دهید. کمتر به این فکر کنید که یک چیدمان چگونه ساخته می‌شود؛ بیشتر به این فکر کنید که آن چیدمان چه هدفی را محقق می‌کند.

به این مثال نگاه کنید:

این جایگزین CSS نیست، بلکه بیانگر هدف است.

  • محتوا با یک شبکه (grid) سازگار می‌شود.
  • در موبایل، به صورت پشته‌ای (stack) نمایش داده می‌شود.

پیاده‌سازی در داخل سیستم باقی می‌ماند. بحث بر سر انتزاع (abstraction) بیشتر نیست، بلکه بحث بر سر ارتباط بهتر است.

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

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

وظیفه یک سیستم طراحی این است که:

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

هنگام طراحی APIها این سوال را از خود بپرسید: «آیا می‌توانم شش ماه دیگر این را درک کنم؟»

این‌ها را نپرسید:

  • «آیا می‌توانم همه‌چیز را پیکربندی کنم؟»
  • «آیا می‌توانم از تمام حالت‌های خاص (edge cases) پشتیبانی کنم؟»

خوانایی مقیاس‌پذیر است، اما پیچیدگی خیر.

سادگی یک محدودیت نیست. هدف این است که قدرت را در جای درست قرار دهید. جریان‌های کاری رایج باید ساده باقی بمانند و جریان‌های کاری پیشرفته باید همچنان امکان‌پذیر باشند.

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

توسعه‌دهندگان نمی‌خواهند چیدمان بسازند؛ آن‌ها می‌خواهند محصول بسازند. چیدمان تنها بخشی از کار است.

منبع: https://dev.to/stinklewinks/building-a-design-system-without-recreating-css-1a41