当我编写一些通用的编程实用程序代码时,我发现为一个功能同时拥有就地 mutator 和新的对象创建者成员函数是件好事。
例如,某些表示文件系统中路径的类可能具有“规范化”功能。路径对象可能会将自己变异为规范化的对象,或者返回新的规范化路径对象。
class path {
...
void normalize_itself()
path get_new_normalized_path()
...
}
我已经为此尝试了一些约定,但其中大多数都不能令人满意。
“正常化!” 对于像 ruby 这样的就地函数 - 很好,但大多数其他语言不支持将特殊字符包含在标识符中。
'normalize_ip' 用于就地函数 - 因为我的大多数函数用法都是就地的,我认为它太丑陋了。
'get_normalized' 用于非就地函数 - 可接受,但可能与成员的其他简单 getter 函数混淆。
非就地功能的“标准化” - 有时不统一,并且很容易与其就地对应部分混淆。
将非就地函数编写为自由函数 - 缺乏 IDE 的智能感知帮助,有时会出现可见性问题。
我想找到一些好的/实用的约定来区分两个功能。