Skip to content

小组件通常提供修改其属性的功能丨think-cell

在今天的代码审查中,我提出了我们不久前的一些见解。

我们有一个带有小部件的跨平台 UI 库。UI 小部件本质上服务于两个主节点:使用它们的代码想要设置它们的样式并预填充它们的内容。使用它们的用户希望与它们交互并修改其内容。

因此,小组件通常提供修改其属性的功能,包括内容,以及通知内容更改的事件。例如,编辑框可能提供 SetText 函数和 OnTextChange 事件。

问题如下:如果 SetText 修改文本,则是否应该触发 OnTextChange 事件?当然,使用小部件的代码必须做类似的事情,无论谁进行更改。

但是,代码很容易调用回调本身。更改回调的作用要困难得多:代码需要将上下文传输到回调中。更糟糕的是,处理 SetText 方案的行为现在在回调中实现,可能远离对 SetText 本身的调用,对于代码的读取器来说没有明显的连接。

因此,在我们的 UI 库中,我们遵循只有用户交互才会触发事件的规则。

Leave a Reply

Your email address will not be published. Required fields are marked *