class - 如何在类方括号之外定义类方法以提高可读性?
问题描述
如何在类方括号之外定义类方法以提高可读性?例如,类似的东西......
class MyClass {
//Private variables:
int _foo = 0;
//Private methods:
void _incrementFoo();
//Public methods:
int getFoo();
}
void _incrementFoo() {
_foo++;
}
int getFoo() {
_incrementFoo();
return _foo--;
}
如您所见,我想通过提供签名来告诉班级有关方法的信息,然后我实际上会在班级之外定义它们……在飞镖中有什么方法可以做到这一点?
解决方案
好吧,我不同意你想做的事情会提高可读性。如果要拆分接口和实现,我认为以下方法要好得多:
abstract class MyClass {
//Public methods:
int getFoo();
factory MyClass() => _MyClass();
}
class _MyClass implements MyClass {
//Private variables:
int _foo = 0;
//Private methods:
void _incrementFoo() => _foo++;
//Public methods implementation:
int getFoo() => _foo;
}
如果你真的想以你的方式去做,你需要有一种方法告诉你他们是你班级的一部分。你可以这样做:
class MyClass {
//Private variables:
int _foo = 0;
//Private methods:
void _incrementFoo() => _incrementFooImpl(this);
//Public methods:
int getFoo() => getFooImpl(this);
}
void _incrementFooImpl(MyClass myClass) {
myClass._foo++;
}
int getFooImpl(MyClass myClass) {
myClass._incrementFoo();
return myClass._foo--;
}
但我认为这相当难看,并且您最终会在代码中添加许多全局方法,这会使您很难看到每个方法属于哪个类。
推荐阅读
- java - 是否可以在使用动态包含时从另一个 JSP 调用方法?
- python - 通过批处理文件运行时,将 python 脚本的输出打印到 Windows 控制台
- python - Pandas 根据日期范围和另一列过滤数据框
- html - 从 React 中的隐藏溢出中弹出
- facebook-graph-api - 获取给定日期的 Instagram 关注者数量
- r - 为什么 r 中关于生成 Gamma 随机变量的代码不返回预期的输出?
- cross-browser - 我应该如何做跨浏览器解决方案?
- powershell - 如何使用 powershell 传递参数?
- python - Python 类 - 存储和引用实例
- python - 如何在两个不同的 Github 存储库中同步一些文件夹?