c# – 我应该将费用折扣列表纳入订单类别还是将它们作为项目

c# – 我应该将费用折扣列表纳入订单类别还是将它们作为项目,第1张

概述我没有其他开发人员可以征求意见或“你觉得怎么样 – 我在想这个”所以请你,如果你有时间,请阅读并告诉我你的想法. 显示比描述更容易,但应用程序基本上就像一个销售点应用程序,有3个主要部分:Items,OrderItems和Order. item类是来自数据存储区的数据. public class Item : IComparable<OrderItem>, IEquatable<Orde 我没有其他开发人员可以征求意见或“你觉得怎么样 – 我在想这个”所以请你,如果你有时间,请阅读并告诉我你的想法.

显示比描述更容易,但应用程序基本上就像一个销售点应用程序,有3个主要部分:Items,OrderItems和Order.

item类是来自数据存储区的数据.

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}

订单商品类是订单上的商品系列.

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}

目前,当您向订单添加费用或折扣时,它很简单:

Order order = new Order();// Feeorder.Add(new OrderItem(new Item("admin Fee",20),1));// discountorder.Add(new OrderItem(new Item("Today's Special",-5),1));

我喜欢它,它是有意义的,并且Order继承自列表中的项目的迭代,计算适当的税收,并允许其他订单类型的文档(其中有2个)从计算的基类继承所有这一切都没有重新暗示任何事情.如果订单类型的文档没有折扣,那就像不添加 – $value OrderItem一样简单.

我遇到的唯一问题是显示这些数据.这种形式有一个网格,其中应显示销售项目(即不是费用/折扣).同样,有一些文本框可以收取某些费用和某些折扣.我非常希望将这些ui元素数据绑定到此类中的字段,以便用户(和我)更容易.

我的想法

有2个接口:IHasFees,IHasdiscounts并且有Order实现它们;两者都有一个List的成员.这样,我只能访问Sale项目,只能访问费用,只能访问折扣(如果需要,可以将它们绑定到控件).

我不喜欢它:
– 现在我有3种不同的类添加/删除方法(AddItem / AddFee / Adddiscount / Remove …)
– 我正在复制(三次复制?)功能,因为它们都只是相同类型项目的列表,只是每个列表都有不同的含义.

我在正确的道路上吗?我怀疑这对大多数人来说是一个解决的问题(考虑到这种类型的软件很常见).

解决方法 我将指出Robnet在不久前听过的ALT.net播客上的一句话(我不是ALT.net的倡导者,但推理似乎合理):

什么对“业务用户”有意义(如果你有任何这些).

作为一名程序员,你会想要考虑项目,费用,折扣等,因为他们有相似的属性和行为.

但是,就模型而言,它们可能是两个完全独立的概念.有人会在以后来,说“但这没有意义,它们是分开的东西,我需要单独报告它们,我需要在这种情况下应用这个特定的规则来折扣”.

DRY并不意味着限制你的模型,你应该在通过继承或类似事件来分解行为时保持这一点.

在这种情况下使用的具体示例是购物车的示例.程序员的自然想法是使用处于未通状态的订单.这是有道理的,因为它们看起来完全一样.
除了他们不是.它对客户来说没有任何意义,因为它们是两个独立的概念,它只是使设计不那么清晰.

这是一个实践,品味和意见的问题,所以不要盲目跟随网站上发布的建议:)

对于您的具体问题,我使用的系统使用物品,项目折扣(项目的财产)和订单的全球折扣(虽然它不是订单,它是POS收据但它并不重要在这种情况下).

我想原因是,在这些概念背后,物品是库存件的特定实例,它们影响库存量,它们是可枚举的和可量化的.

费用不是.它们不共享大多数属性.

在您的情况下,这可能无关紧要,因为您的域名似乎比这更有限,但您可能想要记住这些问题.

总结

以上是内存溢出为你收集整理的c# – 我应该将费用/折扣列表纳入订单类别还是将它们作为项目全部内容,希望文章能够帮你解决c# – 我应该将费用/折扣列表纳入订单类别还是将它们作为项目所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/langs/1247934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存