dart - 我应该输入类型吗?
问题描述
创建变量时我应该给出类型吗?
仅声明关键字“var”有什么缺点吗?
这两者有什么区别吗?
var a = 0;
int a = 0;
解决方案
优点缺点
ONGOING WORK
最佳实践
推荐使用var
orfinal
关键字,不指定类型注解,隐式推断已知局部变量的类型。否则,建议指定类型注释。至于dynamic
关键字,当您进行手动类型检查时,在特定用例中应该非常谨慎地使用它。例如print(myVariable is SomeType)
.
omit_local_variable_types
Dart linter 规则鼓励省略已知局部变量的类型注释。always_specify_types
鼓励为不属于前 linter 规则范围的情况指定类型注释。
1. Flutter repo 风格指南
1.1避免使用var
所有变量和参数都是类型化的;在任何可以确定实际类型的情况下避免使用“动态”或“对象”。在可能的情况下,始终专门化泛型类型。显式键入所有列表和映射文字。
这实现了两个目的:它验证编译器将推断的类型是否与您期望的类型匹配,并且在类型不明显的情况下(例如,调用构造函数以外的任何内容时)使代码自记录。
始终避免使用“var”。如果您明确表示类型未知,请使用“动态”,但更喜欢“对象”和强制转换,因为使用动态会禁用所有静态检查。
2. Dart Lint 规则
2.1omit_local_variable_types
考虑省略局部变量的类型注释。
通常,局部变量的类型可以很容易地推断出来,因此不需要对其进行注释。
2.2always_specify_types
请指定类型注释。
var
在指定类型未知和省略类型注释的简写时避免。dynamic
如果您明确表示类型未知,请使用。Object
如果您明确表示您想要一个实现==
和的对象,请使用hashCode
。
参考
您可以参考Flutter repo 的样式指南、 Dart 的 Linter 支持的 Lint 规则的完整列表和Effective Dart 的样式指南。
请注意,Flutter repo 的样式指南在 Flutter社区中使用,并且优先于 LinterRules 和 Effective Dart 的样式指南,尤其是在 repo 贡献中。据我所见,Flutter repo的样式指南更像是一个超集样式指南,应该遵守 Dart Linter 规则。
推荐阅读
- python-3.x - 结合 pandas df 列和行以获取字符串中的对 - python
- php - 网站联系表和 Google Workspace
- python - 在 Panda Python 中删除行中的非数字
- c# - 如何在列表中使用 IndexOf
- asp.net-core - 如何在 .Net 5 OAuth API 上授权不同的角色
- c - 获取字符串中子字符串所有出现的所有索引
- r - 有没有办法将 RMarkdown 中的标签集放在页面的一侧?
- python - 使用 Sqlalchemy 连接 SQL Server - Pandas
- php - 如何防止 imagecreatefrom 创建静态 gif - PHP
- python - 子类名称是一个数字