ما هو السبب وراء إعطاء الشرطة السفلية في ملفات الرأس الخاصة من التفاح

StackOverflow https://stackoverflow.com/questions/1829755

  •  11-09-2019
  •  | 
  •  

سؤال

لقد رأيت الكثير من .h (API الخاص) من Apple. معظم المتغيرات / الهياكل / العادة / الطبقات لديها _ كبادئة.

#import <Foundation/NSValue.h>
#import <Foundation/NSObjCRuntime.h>

@class NSString;

typedef struct _NSRange {
    NSUInteger location;
    NSUInteger length;
} NSRange;

سؤالي هو،

ما هو السبب وراء إعطاء الشرطة السفلية و typedef لهم مرة أخرى مع واحد مناسب؟

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

المحلول

الهدف - C لديه مساحة اسم مفتوحة عالميا. من المهم أن تكون جميع الأسماء فريدة من نوعها. بالإضافة إلى الأسباب التي تعطى سابقا، تحتفظ Apple جميع أسماء التشطيبات على نفسها. سيساعد ذلك في منع تصادمات الاسم العرضي.

نصائح أخرى

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

أعتقد أن هذا من أجل إنشاء نوع مبهمة. وبعد هذا يحد من عملاء النوع من الوصول إلى التفاصيل الداخلية دون استخدام الواجهة المقدمة. يمكنك بعد ذلك استخدام الهيكل من خلال مؤشر مبهمة, ، ويمكن أن يعلن المصفوفات والمتغيرات وغيرها من النوع دون القلق بشأن التنفيذ الداخلي، مما يضمن إعادة ترجمة البرنامج إذا قررت Apple تغيير الرمز وراء هذه الأنواع.

لإعلان الهياكل، أسلوب الإعلان typedef struct _name {...} name يعود إلى أيام دول مجلس التعاون الخليجي 2.0 أو نحو ذلك، عندما تم ذكرها أعلاه، لا يمكنك الحصول على بنية مجهولة.

بالنسبة لأسماء IVARS، فإن UndersCore الرائد الوحيد هو اتفاقية ترميز أبل الداخلي، وتحديث Apple رسميا تحتفظ بجميع الأسماء التي تبدأ بسفل إكسبريس واحد. إذا كانت Apple تسمي جميع avars بهذه الطريقة، فلن تصطدم بأي من أسمائها إذا لم تفعل ذلك.

لسوء الحظ، تم نشر العديد من مشاريع التعليمات البرمجية عينة على موقع مطور Apple's Developer دون المرور عبر الرمز وإزالة السفلات السفلية الرئيسية على أسماء Ivar. يحدث هذا لسببين، والثاني هو أن المطورين الذين يعملون داخل التفاح يعتادون على تسمية متغيراتهم بهذه الطريقة، والسبب الآخر هو أن الأشخاص الذين يراجعون مشاريع التعليمات البرمجية لم يهتموا حقا كثيرا بتنفيذ الترميز القياسي نمط.

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