代码之家  ›  专栏  ›  技术社区  ›  Macks

代码样式:商店。添加产品(产品)还是商店。产品。添加(产品)?

  •  2
  • Macks  · 技术社区  · 13 年前

    这是我问自己很长一段时间的问题,所以我决定问你们。

    假设我有 Shop -包含 ProductList -对象作为实例变量。我的核心功能 商店 -对象当然是添加 Product .

    将产品添加到商店的公共界面应该是什么样子的?

    shop.AddProduct(product)

    或

    shop.Products.Add(product) ?

    谢谢你的想法和帮助。

    1 回复  |  直到 13 年前
        1
  •  3
  •   Community Mohan Dere    9 年前

    这实际上是一个关于是否将Products作为属性公开,或者是否使用方法的问题。关于这一点,SO已经有很多问题了。例如:

    Properties vs Methods

    在大多数情况下,当属性不是容器对象的功能部分时,我个人更喜欢它们。我的意思是,产品不是商店不可分割的一部分。商店仍然是一家商店,即使它没有产品。

    产品只是生活在商店里的物品。因此,它们作为一个集合属性是非常合理的。尽管我可能有一个库存属性,其中“产品”是库存的一个属性。

    无论如何,当方法做某事时,它们往往更有意义。不仅仅是包含一些东西。例如 store.PurchaseProduct(product) 将从产品集合中删除项目,但它也会做一些事情(向收银台添加资金,进行库存管理等)。

    使用方法的另一个原因是,在操作集合时需要做几件事。例如,假设你不希望在没有确保钱进入收银台或记录破损情况的情况下从产品中取出物品。然后,我仍然会使用一个属性,但我会将该属性设为私有属性,并且只通过执行操作的方法访问它。

    然而,这在很大程度上是一个哲学论点。不管怎样,人们都会有意见。重要的是你自己的意见。