سؤال

احتقر العمل مع اعد واجهات برمجة التطبيقات الرائدة التي لا تجعل أشياء بسيطة بسيطة. ومع ذلك، أنا أعمل على تصميم واجهة برمجة تطبيقات لمكتبة مفتوحة المصدر وبدأت أشعر أنني أسقط في فخ المناطق المعيشية. أنا حقا لا أستطيع أن أقول بالتأكيد لأنه، بالطبع، كتبت الشيء الرأي، فكيف يعمل أكثر وضوحا بالنسبة لي أكثر من أي شخص آخر. ما هي بعض علامات التحذير من منظور المطور الذي قد ينطق فيه واجهة برمجة التطبيقات الخاصة بك؟

هل كانت مفيدة؟

المحلول

"ما هي بعض علامات التحذير من منظور المطور الذي قد يكون فيه واجهة برمجية أكبر من ذلك؟"

لا حالات الاستخدام.

إذا لم تتمكن من تشغيل السيناريوهات البسيطة "القيام بذلك"، فأنت لا تقوم بتصميم واجهة برمجة تطبيقات مفيدة مع حالات استخدام محددة في الاعتبار.

يجب أن تكون وثائقك تلك حالات الاستخدام.

من المحتمل أن تكون الميزات التي لا تتناول حالات الاستخدام مباشرة على الهندسة.

نصائح أخرى

يجب عليك التحقق من الحديث Google Tech كيفية تصميم API جيدة ولماذا يهم بقلم جوشوا بلوخ ... يغطي الكثير من هذه الأشياء.

خدعة واحدة وجدت مفيدة للغاية وقد ساعدني في الماضي هو كتابة وثيقة قبل، أثناء، وبعد الكود.

عند تصميم واجهة برمجة تطبيقات لاستخدامها من قبل أشخاص آخرين عادة ما تقوم بتوثيق التصميم قبل كتابة التعليمات البرمجية. إذا كنت على هندسة التصميم، فإن مواصفات التصميم عادة ما تكون مليئة بالصراعات والهراء.

أثناء الترميز، عادة ما أبوي تعريف الفصل ووظيفة الجسم وبدء كتابة تعليقات Doxygen لهم. في التعليقات، سأستمر في استخدام الحالة وعينة التعليمات البرمجية وافتراضات الواجهات. خلال هذه المرحلة، قبل كتابة الكود الحقيقي، فإن واجهة الفصل مرتفعة عادة من خلال إعادة تصميم عدة مرات. أعلم أنني كنت أكثر من هندسة عندما يصعب الكتابة في نموذج التعليمات البرمجية ولدي وقتا عصيبا في شرح الواجهة. يتعرض الكثير من أفكار التصميم السيئ والقضاء عليه عند محاولة شرح الأشخاص كيفية استخدام API الخاص بك.

بعد الترميز، استبدل نموذج التعليمات البرمجية في التعليقات التي تتم نسخها من اختبارات الوحدة ومجموعة مختبرة من اختبارات وحدتي وتوثيق سلوك الواجهة. هناك علامة أخرى على الهندسة في الهندسة هي عندما لا يمكن اختبارات وحدتي مواكبة تغيير الواجهة لأن هناك الكثير من الأجزاء المتحركة وطرق كثيرة جدا للقيام بنفس الشيء واختبارات الوحدة النمو في نسبة أسية.

عندما يتطلب منك تتبع المكدس للحصول على مكالمة API الشائعة التمرير الشاشة لرؤية كل شيء.

عند مراجعة الوثائق والأمثلة، النسبة المئوية لفوجر الفعل مناقشة API فيما يتعلق بحد ذاتها CMPARED على النسبة المئوية من الكتابة الفعلية لمناقشة طلبها إلى حالات الاستخدام الموثوق بها.

كما قال S.lott، استخدم الحالات. سيحددون ما يجب توجيه واجهة برمجة التطبيقات الخاصة بك بالضبط نحو القيام به. إذا قمت بتصميم API لك إكمال هدف واضح للغاية ومحدد - متماسكة وظيفيا - من المرجح أن ينتهي بك الأمر باستخدام API أو مكون في واجهة برمجة تطبيقاتك سهلة الاستخدام وفهمها.

يجب أن يكون تصميم API مثل تصميم واجهة المستخدم. معظم مفاهيم واجهة المستخدم يمكن تبنيها من قبل API، على سبيل المثال، مبدأ قبلة أو حتى كايزن.

أود أن أرتبط بهذه المفاهيم UI، لكنني مستخدم جديد حتى لن يسمح لي بنشر أكثر من ارتباط تشعبي واحد. مثال جيد هناك: Stackoverflow، واسمحوا لنا أن نعرف قبل أن ننشر؛).

اثنين (ذات الصلة) أسئلة لطرح نفسك تعال إلى الذهن على الفور:

  • هل هناك أشياء يمكن القيام بها في أكثر من طريقة واحدة؟
  • هل هناك طرق / خصائص على API التي يمكن التعبير عنها من حيث بقية API؟

من الصعب الإجابة، وليس علامة على التردد في حد ذاته، ولكن بالتأكيد علامة API ليست بسيطة كما قد يكون بعد:

  • هل هناك طرق / خصائص أخرى يمكنك إدخالها من شأنها أن تجعل من الممكن إزالة أكثر مما قدمت (بناء على السؤالين الآخرين)

عندما يكون ذلك ذكيا للغاية، لا يمكن لأحد أن يفهمه.

ابدأ في القلق عندما يكون لديك واجهة برمجة تطبيقات كبيرة مع الكثير من الوظائف التي، على التفتيش الوثيق، تتحول إلى أن تكون مؤلفات من عمليات أبسط. عادة ما تكون API مع نسبة عالية من آليات التكوين البدائية عادة تصميم جيد.

(تصميم API يشبه إلى حد كبير تصميم اللغة، وهنا أقوم بتقييم فلسفة المخطط بشكل أساسي - بدلا من تتراكم المزيد من الروتينات في API، وتبسيطه وتشمل آليات التركيب التي تجعل الروتين الإضافي غير ضروري.)

في تجربتي، يمكنك معرفة متى يتم تعليق المشروع بأكمله لعدة أشهر، في انتظار الانتهاء من API.

عند استخدام API هو: (1) المزيد من المنفرج والأكثر تعقيدا وأقل كفاءة، وأقل يمكن التنبؤ به من مجرد استخدام التكنولوجيا الأساسية، و (2) لا تقدم ميزة كبيرة للسلامة أو التوسع أو الحرية عبر منصة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top