API خوب چیه؟ همونی که آروم پیر میشه
خلاصهٔ کاملتر
نویسنده میگه اکثراً به نسخهٔ اول یه API بیش از حد اعتماد میکنیم، چون تو اون مرحله همهچیز سادهست: کسی که ساختتش دقیقاً میدونه باید چطور کار کنه، و سیستم دور و برش هنوز عوض نشده. اما وقتی زمان میگذره و تیمهای دیگه شروع میکنن به استفاده از اون API - مثلاً یه تیم برای پردازش دستهای ازش استفاده میکنه، یا یکی فرض میکنه یه فیلد همیشه ثابت میمونه چون تا حالا همینطور بوده - یهو اون API که اول ساده به نظر میرسید، پر از وابستگیهای ناخواسته میشه.
به گفتهٔ نویسنده، بیشتر مشکلات API نه به خاطر اسم بد یا کد زشت، بلکه به خاطر مرز نامشخص بین چیزی که باید عمومی باشه و چیزی که باید داخل سیستم پنهان بمونه پیش میان. وقتی یه فیلد یا رفتار داخلی زودتر از موقعش دیده بشه، بقیه شروع میکنن روش حساب باز کردن، حتی اگه هیچوقت رسماً قول داده نشده باشه. نویسنده توصیه میکنه همیشه کمترین چیز ممکن رو نشون بدید، چون اضافه کردن بعداً راحته ولی حذف چیزی که بقیه بهش وابسته شدن، دردسر بزرگیه.
نکتهٔ دیگهٔ مقاله اینه که APIهای «راحت» معمولاً یهعالمه فرض پنهان دارن - مثلاً فرض میکنن فراخوانیها به یه ترتیب خاص انجام میشن یا کاربر همیشه یهجور فکر میکنه - و همین فرضها بعداً وقتی یه نیاز جدید پیدا میشه، دردسرساز میشن. نویسنده همچنین هشدار میده طراحی API دقیقاً بر اساس شکل فعلی فرانتاند اشتباهه؛ چون وقتی صفحه عوض بشه، API یا باید بار مسائل قدیمی رو تا ابد بکشه یا نیاز به یه پاکسازی طولانی و آزاردهنده داره.
نویسنده میگه نسخهبندی (versioning) بهتنهایی طراحی بد رو جبران نمیکنه؛ اگه API هنوزم زیادی به جزئیات پیادهسازی وابسته باشه، کاربرا بازم مجبور میشن مهاجرت کنن و کد سازگاری نگه دارن. به باور اون، یه API خوب باید تو گرفتن ورودی یهکم بازتر باشه ولی تو خروجی دادن خیلی محتاطتر عمل کنه، چون هر چیزی که برگردونده بشه - حتی اگه بیاهمیت به نظر برسه - دیر یا زود به یه وابستگی واقعی تبدیل میشه.
نکات کلیدی:
- نسخهٔ اول یه API معمولاً به خاطر سادگی شرایط اولیه، بهتر از چیزی که واقعاً هست به نظر میرسه
- بیشتر مشکلات API از مرز نامشخص بین بخش عمومی و بخش داخلی سیستم میاد
- توصیهٔ نویسنده: همیشه کمترین چیز ممکن رو در API نشون بدید، چون حذف بعداً سخته
- طراحی API بر اساس شکل فعلی فرانتاند، باعث میشه API با سرعت تغییرات محصول کهنه بشه
- نسخهبندی مشکل طراحی ضعیف رو حل نمیکنه، فقط هزینهش رو جابهجا میکنه




