Back

အခုပြောချင်တာက API Design ။ လူတွေက API လို့ဆိုလိုက်ရင် HTTP-based REST-ful API ကိုဘဲလှမ်းမြင်တယ်။ များသောအားဖြင့် အဲ့တာကိုဘဲ ပြောကြတာကိုး။ တကယ်တော့ API Design ဆိုတာ client-server interaction ထက်ပိုပါတယ်။ API (application programming interface) ဆိုတာ မိမိ code ကို တခြား developer များ ဘယ်လို အသုံးပြုမလဲဆိုတာကို စဉ်းစားရတာပါပဲ။ UI design လိုမျိုး DI (developer interaction) design လို့ဆိုကြပါစို့။ ကျွန်တော်တို့ သင်ခဲ့ရတဲ့ ပထမဆုံး DI Design သင်ခန်းစာကတော့ variable တွေကို ဘယ်လိုနာမည်ပေးမလဲပေါ့။ နောက်ပြီးတော့ တဆင့်တက်ပြီး function တွေ၊ နောက် class တွေ၊ ပြီးတော့ module တွေလိုက်၊ နောက်ဆုံး service တွေအလိုက် ဘယ်လို API တွေ expose မလဲ စဉ်းစားလာရတာပေါ့။

မိမိ programming language ရဲ့ language features အမျိုးမျိုးကို အသုံးပြုပြီး library တွေ framework တွေရဲ့ API တွေကို developer တွေက တည်ဆောက်ကြတယ်။ dot notation တွေသုံးပြီး builder patterns တွေ၊ operator overloading တွေ၊ Python မှာဆို keyword argument တွေနဲ့ functions တွေမှာ optional argument တွေ pass တာမျိုး၊ Django မှာဆို Python ရဲ့ meta-programming feature နဲ့ keyword argument ပေါင်းပြီး သူ့ ORM မှာ IDE က suggestion ထိုးပေးလို့ရတဲ့ dynamic query တွေ ဆောက်တာမျိုးတို့၊ JavaScript မှာဆို arrow function က ရေးရတာ convenient ဖြစ်လွန်းလို့ အရာရာက်ို callback function တွေ currying တွေနဲ့ design ထားတာမျိုးတွေ၊ Java မှာဆို reflection နဲ့ meta-programming ကိစ္စတွေလုပ်တာ၊ Go ရဲ့ libraries တွေဆိုရင် struct tags conventions တွေနဲ့ meta-data တွေ pass တာ စသဖြင့်ပေါ့။ စဉ်းစားရင် စဉ်းစားတတ်သလောက် အများကြီး လုပ်ကြပါတယ်။

ဒီဥပမာတွေ ဘာလို့အများကြီးပေးနေရတာလဲဆိုတော့ code design မှာ မှားတယ်မှန်တယ်ဆိုပြီးမရှိဘူး။ အဆင်နည်းနည်းပြေတာနဲ့ အများကြီးပြေတာဘဲရှိတယ်။ Laravel တို့ Django တို့ဆို framework-specific conventions တွေနဲ့ code ကို တတ်နိုင်သမျှ DRY အောင်လုပ်ပေးထားတယ်။ Express ဆို အကုန်လုံးက middleware တွေချည်းပဲ ဘယ်လောက်လှလိုက်သလဲ။ ဒီမှာ ဘာလို့ ဒီ API က သုံးလို့ကောင်းတာလဲ ဘာလို့မကောင်းတာလဲ ဆိုတာကကျ intuition တွေ context တွေ ပေါ်မှာ မူတည်သွားပြီ။ code coupling ဘာညာ တိုင်းတာတဲ့ metrics တွေ ရှိပေမယ့် သူတို့ချည်းပဲသက်သက် ယုံလို့တော့ မရဘူး။ ကိုယ့်ရဲ့ API design ကို တိုးတက်စေချင်တယ်ဆိုရင်တော့ code များများ ကို တတ်နိုင်သမျှ DRY အောင်ရေးပါ။ ပြီးတော့ UI designers တွေရဲ့ စကားအတိုင်းပြောရမယ်ဆို empathetic ဖြစ်ပါ။