CSS ને ફરીથી બનાવ્યા વગર ડિઝાઇન સિસ્ટમ બનાવવી

ડિઝાઇન સિસ્ટમો ઘણીવાર એક જાળમાં ફસાઈ જાય છે.

તમે યુટિલિટી ક્લાસ (utility classes) ઉમેરવાથી શરૂઆત કરો છો. તમે રિસ્પોન્સિવ વિકલ્પો ઉમેરો છો. તમે લેઆઉટ હેલ્પર્સ ઉમેરો છો. ટૂંક સમયમાં, તમે એક નવું સિન્ટેક્સ (syntax) બનાવી દો છો. તમે અંતે એ જ કામ કરો છો જે CSS પહેલેથી જ કરે છે.

CSS ને બદલવાનો પ્રયાસ કરવાનું બંધ કરો.

તેના બદલે, CSS ની ઉપર એક લેયર બનાવો. હેતુ (intent) પર ધ્યાન કેન્દ્રિત કરો.

ડેવલપર્સને લવચીકતા (flexibility) જોઈએ છે. પરંતુ લવચીકતા જટિલતા લાવે છે. ઘણી સિસ્ટમો દરેક બ્રેકપોઈન્ટ અને લેઆઉટ વિકલ્પને ખુલ્લો પાડે છે. આનાથી માર્કઅપ (markup) વાંચવું મુશ્કેલ બને છે. તમારો કોડ લેઆઉટ શું કરે છે તેના કરતાં લેઆઉટ કેવી રીતે બનાવવું તેનું વર્ણન કરવામાં વધુ સમય વિતાવે છે.

સિસ્ટમ સમજવી મુશ્કેલ બની જાય છે કારણ કે તે બધું જ વર્ણન કરવાનો પ્રયાસ કરે છે.

તમારું ધ્યાન બદલો. લેઆઉટ કેવી રીતે બનાવવામાં આવે છે તેના વિશે ઓછું વિચારો. લેઆઉટ શું હાંસલ કરે છે તેના વિશે વધુ વિચારો.

આ ઉદાહરણ જુઓ:

આ CSS ને બદલતું નથી. તે હેતુ વ્યક્ત કરે છે.

  • કન્ટેન્ટ ગ્રીડ મુજબ અનુકૂલિત થાય છે.
  • મોબાઈલ પર, તે સ્ટેક (stack) થાય છે.

અમલીકરણ (implementation) સિસ્ટમની અંદર રહે છે. આ વધુ એબ્સ્ટ્રેક્શન (abstraction) વિશે નથી. આ વધુ સારી વાતચીત (communication) વિશે છે.

અનંત કોન્ફિગરેશન કરતાં સારા ડિફોલ્ટ્સ (defaults) વધુ સારા છે. મોટાભાગના લેઆઉટ સામાન્ય પેટર્નનું પાલન કરે છે. મોટાભાગના ડેવલપર્સ કન્ટેન્ટને વ્યવસ્થિત કરવા માંગે છે, નવા લેઆઉટ સિસ્ટમ શોધવા નથી.

ડિઝાઇન સિસ્ટમે વિચારપૂર્વક ડિફોલ્ટ્સ આપવા જોઈએ. જો તમે CSS ની દરેક ક્ષમતાને ખુલ્લી પાડવાનો પ્રયાસ કરશો, તો તમે હારી જશો. CSS પહેલેથી જ શક્તિશાળી અને પ્રમાણિત છે.

ડિઝાઇન સિસ્ટમનું કામ છે:

  • કોગ્નિટિવ લોડ (cognitive load) ઘટાડવો.
  • સુસંગતતા (consistency) ઊભી કરવી.
  • હેતુ જણાવવો.
  • સામાન્ય પેટર્નને સરળ બનાવવી.

API ડિઝાઇન કરતી વખતે તમારી જાતને આ પ્રશ્ન પૂછો: "શું હું છ મહિના પછી આ સમજી શકીશ?"

આ ન પૂછો:

  • "શું હું બધું જ કોન્ફિગર કરી શકું છું?"
  • "શું હું દરેક એજ કેસ (edge case) ને સપોર્ટ કરી શકું છું?"

વાંચનક્ષમતા (Readability) વધે છે. જટિલતા વધતી નથી.

સરળતા એ મર્યાદા નથી. ધ્યેય શક્તિને યોગ્ય જગ્યાએ મૂકવાનો છે. સામાન્ય વર્કફ્લો સરળ રહેવા જોઈએ. એડવાન્સ્ડ વર્કફ્લો શક્ય રહેવા જોઈએ.

શ્રેષ્ઠ ડિઝાઇન સિસ્ટમ્સ એક સમાન ભાષા બનાવે છે. તેઓ અમલીકરણને બદલે હેતુ પર ધ્યાન કેન્દ્રિત કરે છે. તેઓ ડેવલપર્સને હેતુ જણાવવામાં મદદ કરે છે.

ડેવલપર્સ લેઆઉટ બનાવવા માંગતા નથી. તેઓ પ્રોડક્ટ્સ બનાવવા માંગે છે. લેઆઉટ એ કામનો માત્ર એક ભાગ છે.

સ્ત્રોત: https://dev.to/stinklewinks/building-a-design-system-without-recreating-css-1a41