dart - Dart:实例变量在私有类中应该是私有的还是公共的?
问题描述
例如:
class _Foo {
String _var1;
String var2;
}
我总是使用公共变量var2
,因为我认为当类已经是私有的时候创建私有变量是没有意义的,因为无论如何你都不能访问私有类。
但我发现很多人使用私有变量_var1
。这只是个人喜好吗?当类是私有时,私有实例变量有什么意义?如果你不能访问私有类,你就不能访问它的所有实例变量,不管它们是否是私有的。如果您可以访问同一个库中的私有类,那么您可以访问它的所有实例变量,无论它们是否是私有的。
解决方案
将类设为私有不会使其成员私有,也不会使该类的实例不可访问。
认为
lib/private_class.dart
class Foo {
final _PrivateClass privateClass = _PrivateClass();
}
class _PrivateClass {
String publicFoo = 'foo';
String _privateBar = 'bar';
}
bin/main.dart
import 'package:so_53495089_private_field_in_private_class/private_class.dart';
main(List<String> arguments) {
final foo = Foo();
print(foo.privateClass.publicFoo);
// print(foo.privateClass._privateBar); // invalid because of ._privateBar
}
您不能声明私有类类型的变量或参数,也不能在另一个库中扩展或实现该类或创建该类的实例,否则没有太大区别。
因此,如果该字段应该对 API 用户隐藏(内部状态),则将该字段设为私有。
推荐阅读
- powershell - Powershell脚本获取最后一个构建目录
- ansible - Ansible 变量未正确注入,'[u' 由 ansible 添加
- .net - .NET Core 2 API 属性路由配置
- c - 与没有互斥锁的 Worker 线程交互
- go - 如果我包装我的对象,Golang 转换为自定义类型会失败
- c# - SilverLight/WPF viewmodel 命令属性
- django - Django 模型范围从 到
- arrays - 循环工作表代码名数组 VBA
- eclipse-plugin - 如何从类中调用@canExecute 方法
- karma-jasmine - 具有多个项目的 Angular 6 应用程序。如何运行所有规范文件?ng test 只运行第一个项目