سؤال

لذلك كنت أفكر في تخصيص Pimpl و Stack.لقد قمت بكتابة مكتبة وقررت استخدام Pimpl لإخفاء العضو الخاص في الفصل.هذا يعني أن لدي فئة أعلن مثل هذا

giveacodicetagpre.

انها جميلة إلى الأمام مباشرة.ولكن بعد ذلك في المنشئ تفعل هذا

giveacodicetagpre.

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

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

أي أفكار أو اقتراحات؟أنا أكون مبكرا عن المبرمجين باستخدام مكتبتي؟

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

المحلول

هل هذه المفاضلة عليك أن تعيش معها عند استخدام Pimpl؟

بفعالية، نعم، على الرغم من وجود تقنيات، مثل تلك التي ناقشها Herb Sutter في " Pimpl Idiom سريع، " يمكن استخدامه للقضاء على تخصيص أو تسريع كومة، بتكلفة تعقيد أكبر.

فكرت في إطلاق الوثائق مع تحذير بجانب المنشئين: "تحذير: هذا يؤدي إلى تخصيص كومة" أو Somesuch.

فقط إذا كان من الضروري القيام بذلك (I.E.، فقط إذا فوجئ المستخدمون بحقيقة أن فصولك التي أجريت تخصيص كومة). تقوم العديد من الفصول الدراسية بتخصيص الكومة، بما في ذلك العديد من تلك الموجودة في المكتبة القياسية C ++ (جميع الحاويات، على سبيل المثال).

هل سأكون مبدعين عن المبرمجين الذين يستخدمون مكتبتي؟

ربما :-). ما لم يكن لديك متطلبات عالية الأداء لفصلك أو تتوقع إنشاء مثيلات من صفك وتدميرها بشكل متكرر للغاية، لن تقلق كثيرا حيال ذلك. بالطبع، إذا كان لديك متطلبات أداء كبيرة، فقد لا يكون Pimpl خيارا جيدا.

نصائح أخرى

لذلك عندما يقوم شخص ما باستخدام مكتبتي بإنشاء فو على المكدس، فإنهم يقومون بشكل أساسي بتخصيص كومة على أي حال. هل هذه المفاضلة عليك أن تعيش معها عند استخدام Pimpl؟

نعم.

فكرت في إطلاق الوثائق مع تحذير بجانب المنشئين: "تحذير: هذا يؤدي إلى تخصيص كومة" أو Somesuch.

كنت أعتبر أن أكثر التعليق العدواني :) إذا كان فصلك أمر بالغ الأهمية، فربما يجب أن تتجنب تصرف pimpl. إذا كنت تمثل عددا، فقد يكون هذا فيما يتعلق بالإلاحظ. إذا كنت تختبئ تنفيذ اتصال قاعدة البيانات، لا يستحق التعليق :)

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

نعم، إنه أكثر وضوحا للمستخدم، ولكن مرة أخرى ربما لا يستحق عن نفسك.

أي أفكار أو اقتراحات؟ أنا أكون مبكرا عن المبرمجين باستخدام مكتبتي؟

هناك مفاضلة، ولكن إذا كانت صفك معقدة بما يكفي للاستفادة من العبوة Pimpl، فربما يمكنك تحمل تخصيص كومة على ما يرام. إذا كنت أستخدم مكتبتك، فمن المحتمل ألا يهمني.

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