हो सकता है मेरे पास सलाह लेने के लिए कोई अन्य डेवलपर नहीं है या "आप क्या सोचते हैं - मैं यह सोच रहा हूं" तो कृपया, अगर आपके पास है समय, एक पढ़ा है और मुझे बताओ कि आप क्या सोचते हैं।क्या मुझे ऑर्डर क्लास में शुल्क/छूट की सूची शामिल करनी चाहिए या उन्हें आइटमलाइन
वर्णन से दिखाना आसान है, लेकिन ऐप अनिवार्य रूप से 3 प्रमुख भागों के साथ बिक्री बिंदु ऐप की तरह है: आइटम, ऑर्डर इटम्स और ऑर्डर।
आइटम क्लास डेटा डेटा के रूप में डेटा है।
public class Item
: IComparable<OrderItem>, IEquatable<OrderItem>
{
public Int32 ID { get; set; }
public String Description { get; set; }
public decimal Cost { get; set; }
public Item(Int32 id, String description, decimal cost)
{
ID = id;
Description = description;
Cost = cost;
}
// Extraneous Detail Omitted
}
ऑर्डर आइटम क्लास ऑर्डर पर एक आइटम लाइन है।
Order order = new Order();
// Fee
order.Add(new OrderItem(new Item("Admin Fee", 20), 1));
// Discount
order.Add(new OrderItem(new Item("Today's Special", -5), 1));
मुझे यह पसंद है यह भावना और एक आधार वर्ग कि आदेश में आइटम के माध्यम से दोहराता से विरासत में आता है,:
public class OrderItem
: Item, IBillableItem, IComparable<OrderItem>, IEquatable<OrderItem>
{
// IBillableItem members
public Boolean IsTaxed { get; set; }
public decimal ExtendedCost { get { return Cost * Quantity; } }
public Int32 Quantity { get; set; }
public OrderItem (Item i, Int32 quantity)
: base(i.ID, i.Description, i.Cost)
{
Quantity = quantity;
IsTaxed = false;
}
// Extraneous Detail Omitted
}
वर्तमान में जब आप एक आदेश के लिए शुल्क या छूट जोड़ने यह उतना ही आसान के रूप में है सूची, उपयुक्त करों की गणना करता है, और बेस ऑर्डर से प्राप्त करने के लिए अन्य ऑर्डर-टाइप दस्तावेज़ों (जिनमें से 2 होते हैं) के लिए अनुमति देता है जो बिना किसी चीज के इन सब की गणना करता है। यदि ऑर्डर-टाइप दस्तावेज़ में छूट नहीं है, तो यह एक आसान है - $ मान ऑर्डरइटम को जोड़ना उतना ही आसान है।
एकमात्र समस्या जो मैं कर रहा हूं वह इस डेटा को प्रदर्शित कर रहा है। जिस फॉर्म पर यह चलता है वह ग्रिड होता है जहां बिक्री आइटम (यानी फीस/छूट नहीं) प्रदर्शित की जानी चाहिए। इसी तरह कुछ फीस और कुछ छूट के लिए टेक्स्टबॉक्स भी हैं। मैं इस वर्ग में फ़ील्ड में उन UI तत्वों को डेटाबेस करना चाहता हूं ताकि उपयोगकर्ता (और मुझे) पर यह आसान हो।
मेरे विचार
2 इंटरफेस है: IHasFees, IHasDiscounts और व्यवस्था उन्हें लागू है, दोनों जिनमें से सूची का एक सदस्य होगा। इस तरह, मैं केवल बिक्री वस्तुओं तक पहुंच सकता था, केवल शुल्क और केवल छूट (और आवश्यकता होने पर उन्हें नियंत्रित करने के लिए बाध्य करता हूं)। (Triplicating मैं डुप्लिकेट कर रहा हूँ - - अब मैं/3 अलग ऐड मिल गया है वर्ग (addItem/AddFee/AddDiscount/निकालें ...) के लिए विधि निकालें:
मैं इसके बारे में क्या पसंद नहीं करते?) कार्यक्षमता क्योंकि उनमें से सभी एक ही प्रकार की वस्तु की सूची हैं, बस प्रत्येक सूची का एक अलग अर्थ है।
क्या मैं सही रास्ते पर हूं? मुझे संदेह है कि ज्यादातर लोगों के लिए यह एक हल समस्या है (इस बात पर विचार करना कि इस प्रकार का सॉफ्टवेयर बहुत आम है)।
IHasFees और IHasDiscounts ध्वनि LOLCats की तरह हंसते हुए। –