# Alex Kladov: لا تجعل دالة عامة تنادي دالة عامة أخرى، بل استخرج دالة خاصة يناديها الاثنان

> **المغزى:** المغزى: الواجهة العامة مصممة لراحة من يستخدمها، وحين تُبنى عليها تفاصيل التنفيذ الداخلي تتراكم فيها معاملات لا تخص المستخدم، ويصبح كل تعديل فيها تعديلًا يصل إلى الجميع.

- المصدر: المغزى (https://almaghza.com/a/2026-11-01-matklad-public-functions-calling-public/)
- التاريخ: 21 جمادى الأولى - 1 نوفمبر 2026 (2026-11-01)
- القسم: برمجيات
- الوسوم: API، معمارية البرمجيات، جودة الكود، Rust

نشر Alex Kladov، كاتب rust-analyzer، يوم 29 أكتوبر 2026 مقالًا بعنوان Avoid Public Functions Calling Other Public Functions. والقاعدة فيه بسيطة: إذا كان جزء من عمل دالة عامة تؤديه دالة عامة أخرى، فلا تنادِها. استخرج دالة ثالثة خاصة، واجعل الدالتين العامتين تناديانها.

والعلّة التي يشرحها أهم من القاعدة. فالـ API العامة هدفها أن تكون مريحة في مكان الاستخدام، لا أن تكون مريحة لمن يكتب الكود من الداخل. وحين يصبح نصفها أساسًا لتنفيذ نصفها الآخر، ينشأ تعارض بين الهدفين.

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

وما يحمي من ذلك أن يكون الجزء المشترك خاصًا من البداية. فتعديل دالة خاصة رخيص ومحلي، أما تعديل دالة عامة فيصل إلى كل من يعتمد عليها.

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

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

## المصادر

- [مقال Avoid Public Functions Calling Other Public Functions بقلم Alex Kladov](https://matklad.github.io/2026/10/29/pub-calls-pub.html)
