إرجاع ناقلات معرفة أنه سيحتوي دائما على سجل واحد من أجل أن تكون متسقة مع بقية الواجهة؟

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

  •  12-11-2019
  •  | 
  •  

سؤال

أنا أكتب تطبيق دفتر عناوين صغير ولديه ديليمنا بخصوص الواجهة لمصدر البيانات / الخلفية.

لدي فئة قاعدة مجردة التالية لفئات مصدر البيانات: giveacodicetagpre.

أدناه هو عبء سجل القياس الخاص بي وسجل TMY هو typedef إلى متجه STL لهذه الكائنات. giveacodicetagpre.

يتضمن سؤالي نوع قيمة الإرجاع المستخدمة لطريقة DataSource :: GetContact () وطريقة DataSource :: GetallContacts () طريقة وطريقة البحث التي سيتم إضافتها قريبا والتي ستحصل على سجلات بناء على استعلام.

DataSource :: GetContact () سيعود سجلات صفر أو 1 منذ أن أبحث عن طريق معرف فريد. DataSource :: GetallContacts () سيعود صفر أو أكثر من جهات الاتصال. ستعود طريقة البحث القادمة إلى صفر أو أكثر من جهات اتصال.

كما لدي الآن طريقة GetContact () تقوم بإرجاع Auto_Ptr إلى جهة اتصال لأنها تبدو مضيعة لإرجاع المكثفات إذا كنت أعرف بالتأكيد أنهم لن يكونوا أكثر من واحد ويسمحون لي بالعودة فارغة إذا كان هناك ليس هناك سجل له هذا المعرف.

هل سيكون من الأفضل لكي إرجاع ContactriCordset أيضا، ببساطة للواجهة لتظل متسقة؟

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

ماذا تفكر جميعا؟

(ملاحظة - أنا أدرك أنني ربما تكون أكثر من هندسة لتطبيق دفتر عناوين بسيط، لكنني أريد أن تكون سهلة المبادلة من نهايات الظهر المختلفة (ملف مسطح، SQL، إلخ ...) شريطة أنهم تنفيذ الواجهة المشتركة. الهدف هو ممارسة التصميم المعياري الجيد ورسم المخاوف.)

تحديث

أفترض أنني يمكن أن ننظر من المنظور المعاكس وجعل طرق السجلات المتعددة إرجاع auto_ptrs إلى كائنات contactrecordset. بهذه الطريقة أ) يتوافق في أنك تحصل دائما على مؤشر لكائن و B) ليس لديك النفقات العامة لإرجاع ناقلات STD :: Vector إذا كانت مجموعة السجلات فارغة، فما عليك سوى إرجاع مؤشر فارغ.

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

المحلول

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

نصائح أخرى

ما هو ثابت حول إرجاع نوع الجمع لوظيفة غير الجمع؟

أعتقد أنك بحاجة إلى العمل مع تعريف مختلف ل "الاتساق".

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