gpt4 book ai didi

c# - 代码样式 : shop. AddProduct(product) 或 shop.Products.Add(product)?

转载 作者:行者123 更新时间:2023-11-30 22:19:21 27 4
gpt4 key购买 nike

这个问题我已经问了自己很长一段时间了,所以我决定在这里问你们。

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

向商店添加产品的公共(public)界面应该是什么样的?

shop.AddProduct(产品)

shop.Products.Add(product) ?

感谢您的想法和帮助。

最佳答案

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

Properties vs Methods

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

产品只是存在于商店中的元素。因此,它们作为收藏品非常有意义。虽然我可能会有一个 Inventory 属性,其中 Products 是库存的一个属性。

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

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

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

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com