编写高质量Dart程序-库的使用

这些指南帮助您以一致的、可维护的方式将多个文件组成程序。为了使这些指南简洁,他们使用“import”来涵盖import和export指令。这两项准则同样适用。

一定要在部分指令中使用字符串。

许多Dart开发人员完全避免使用part。他们发现,当每个库都是一个文件时,他们更容易理解自己的代码。如果您选择使用part将库的一部分分割成另一个文件,Dart要求另一个文件依次指出它属于哪个库。由于遗留原因,Dart允许指令的这一部分使用它所属的库的名称。这使得工具在物理上查找主库文件变得更加困难,并且可能使部分实际上属于哪个库变得模糊不清。

首选的现代语法是使用指向库文件的URI字符串,就像在其他指令中使用的一样。如果你有一些库,my_library.dart,包含:

library my_library;

part "some/other/file.dart";

然后part文件应该如下:

part of "../../my_library.dart";

而不是:

part of my_library;

不要导入位于另一个包的src目录中的库。

lib下的src目录被指定为包含包自身实现的私有库。包维护者版本包的方式考虑到了这个约定。他们可以自由地对src下的代码进行全面修改,而不需要对包进行破坏性的修改。

这意味着,如果您导入了其他包的私有库,该包的一个小的、理论上没有中断点的版本可能会破坏您的代码。

优先在导入包的lib目录中的库时,选择相对路径。

当从同一包中的另一个库中引用包的lib目录中的库时,可以使用相对URI或显式包:。

例如,假设您的目录结构如下:

my_package
└─ lib
├─ src
│  └─ utils.dart
└─ api.dart

如果api.dart想要输入utils.dart,它应该这样做:

import 'src/utils.dart';

而不是:

import 'package:my_package/src/utils.dart';

没有深刻的理由选择前者——它只是更短,我们希望保持一致。

“在您自己的包的lib目录中”部分很重要。lib中的库可以导入lib(或其子目录中)中的其他库。lib之外的库可以使用相对导入访问lib之外的其他库。

但你不能“cross the streams”。在lib之外的库不应该使用相对导入来访问lib下的库,反之亦然。这样做将破坏Dart正确判断两个库uri是否引用同一库的能力。遵循这两个原则:

  • 导入路径不应该包含/lib/。
  • 库不应该使用../转义lib目录。

猜你喜欢

转载自blog.csdn.net/hayixia606/article/details/81781952