我经常问自己,在结构体impl(看起来更面向对象的东西)中的方法和处理这个结构体的函数(我说更面向数据的东西)之间组织代码的最惯用的方法是什么。
由于我找不到任何关于它的信息,我决定在这里询问是否有人有这方面的信息,或者一些关于它的见解。
下面是我所指的两个简单的情况下的方法。
方法实现(面向对象):
struct Merger {
field1: String,
field2: String,
}
impl Merger {
pub fn merge(&self, data_to_merge: Vec<String>) -> String {
// do stuff...
}
}
字符串
功能实现(面向数据?):
struct MergeConfig {
field1: String,
field2: String,
}
fn merge(conf: &MergeConfig, data_to_merge: Vec<String>) -> String {
// do stuff...
}
型
所以我的问题是:
- 结构化代码的最惯用的方法是什么?
- 如果它更多的是一种设计选择,那么每种方式的典型用例是什么?(因为两者似乎在任何情况下都是有效的)
1条答案
按热度按时间5ktev3wc1#
API指南说这个特定的例子应该是
Merger
上的一个方法。在函数上使用方法的一个直接好处是,您不必导入或限定函数,而只需执行
config.merge(data)
,它将在所有上下文中工作,而无需导入或限定merge