如何解决我应该使用通用或具体的setter和getter来处理映射实体吗?
我有一个应用程序,用户可以在其中更改某些设置。用户可以更改(设置)和读取(获取)其设置,这是一种类似于映射的结构。
我制作了一个UserSettingsInteractor
对象,该对象实现了更改和读取设置的用例,在Python中,它看起来像:
class UserSettingsInteractor:
def __init__(self,...): ...
def set_foo(self,user_id: int,value): ...
def get_foo(self,user_id: int): ...
def set_bar(self,value): ...
def get_bar(self,user_id: int): ...
...
其中的优点是现有设置foo
和bar
是明确的。但是写一个setter和getter使它变得很冗长。可以概括为:
class UserSettingsInteractor:
def __init__(self,...): ...
def set(self,setting: str,value): ...
def get(self,setting: str): ...
现在,客户端代码知道设置的表示方式,它是一个键值对。难道不是会使代码更脆弱吗?
哪种方法更好?
解决方法
我认为,通用方法不会给您带来更多好处:
- 这不是更好的可读性-设置名称将仅作为参数而不是函数名称出现。而且您将必须在getter / setter内部实现一个长例语句,而不是在类级别区分几个函数。
- 同一级别的耦合-如果设置发生更改(例如,商品的数量或名称),您仍然必须在客户端和服务端都进行更改。
- 您不会在编译时看到语义错误(我想这就是您所说的“脆弱”的意思)。
使用我能想到的通用方法的唯一原因是,由于某种原因,您需要一个独立于特定设置的稳定接口,例如,如果您要开发通用的UserSettings
服务,在另一个应用程序场景中重用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。