这个问题我已经问了很长时间了,所以我决定只问你们一个。

假设我有一个Shop对象,其中包含一个ProductList对象作为实例变量。我的Shop对象的核心功能当然是添加Product的能力。

用于向商店添加产品的公共界面应该是什么样的?

shop.AddProduct(product)

要么

shop.Products.Add(product)吗?

感谢您的想法和帮助。

最佳答案

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

Properties vs Methods

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

产品只是存在于商店中的对象。因此,它们作为收藏属性非常有意义。尽管我可能会有一个库存属性,但是“产品”是库存属性。

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

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

但是,这在很大程度上是一个哲学观点。无论哪种方式,人们都会有意见。重要的是您自己的意见。

关于c# - 代码样式:shop.AddProduct(product)还是shop.Products.Add(product)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15626725/

10-13 04:29