在 Dart 应用程序中减少 'parts' 的数量
Reducing amount of 'parts' in a Dart app
我有一个使用 part
和 part of
的相当大的 Dart 应用程序,因此我不必使用相对的 import
。但是,应用程序可能在入口点文件中有这样的内容:
part 'file1.dart';
part 'file2.dart';
part 'file3.dart';
part 'some_sub_dir/file1.dart';
part 'some_sub_dir/file2.dart';
part 'some_sub_dir/file3.dart';
part 'some_sub_dir/file4.dart';
part 'some_sub_dir/file5.dart';
part 'some_sub_dir/file6.dart';
...
据我所知,当我创建新的 class 时,我的 IDE (WebStorm) 不会自动添加 part
语句。有什么办法可以避免使用这么多 part
吗?如果没有,每次添加新的 parts
的过程可以自动化吗?
我了解到:
part/part of 用于将库分成几个部分(脚本)。您可以看到 public 和私人成员。
导入 是 "call/use" 您图书馆中的另一个图书馆。您只能看到导入库的 public 个成员。
WebStorm 无法推断您希望脚本成为库的一部分。
我尽可能理解你的问题,我会尝试根据我在 Dart 中的经验来回答。
据我所知,您正试图将所有(或很多)项目文件作为一个库的一部分。是错误的观念。在 Dart 库中不是什么大事。这里有一些关于如何组织文件的建议。
- 不要试图将大量文件作为一个库的一部分。而是将每个文件保存为单独的库。
- 您可以在一个文件中保留几个 classes。但请确保 classes 一起为一个想法工作。
- 只有当一个库有很多 class 或一个 class 太大时,您才可以将一个库拆分成几个部分文件。但请确保所有这些文件都应该放在一个库中。
- 如果您不知道如何在库中组合 class,请将每个 class 保存在单独的库中。几天后你就会明白哪些 classes 一起玩了。
- 如果一个库中的 class 不仅在库中而且在其他库中都有使用 - 将其分离库。
- 将部件放在与主库文件相同的文件夹中。
- 如果库有部分将所有库文件放入单独的文件夹。
- 使用部分的相对链接。
- 始终使用到其他库的绝对链接。对你以后进行重构有帮助。
比如这是一个类似TODO列表应用的项目。所以,我们有视图 class:
// This is a view html component class. //
library todolist.list_viewer;
import 'package:todolist/task.dart'; // model class
class ListViewer extends HtmlElement {
// it showes list of tasks
}
class TodoRenderer extends HtmlElement {
// this is a renderer for one todo item
}
这是一个模型 class:
// This is a todo model task //
library todolist.task;
class TodoProvider {
List<TodoItem> todos;
String addItem(TodoItem new Todo) {
//...
}
}
class TodoItem {
String Author;
DateTime date;
}
现在看起来很简单,分成了独立的库。但是如果我们想添加 RecId
class 来保持 todo 数据库 id 就变得太复杂了。我们应该把它分成两个库:todo_provider
和 todo_model
并将 RecId
class 放在最后一个。现在又好了。
如果我们想再添加一个模型:一个User
,那么每个待办事项都可能有执行者或作者。我们不能只是把它 todo_model
。现在我们应该将 TodoItem
和 User
class 组合成 model
库。所以我们只需将 todo_model
class 重命名为 model
并添加 User
class 即可。
或者我们可以制作 user_model
库以保留 User
class,而不是最后一个操作。由于用户模型也有 recId
属性,我们应该将 RecId
class 提取到单独的库中。
这完全取决于我们的 class 有多庞大和复杂。
我有一个使用 part
和 part of
的相当大的 Dart 应用程序,因此我不必使用相对的 import
。但是,应用程序可能在入口点文件中有这样的内容:
part 'file1.dart';
part 'file2.dart';
part 'file3.dart';
part 'some_sub_dir/file1.dart';
part 'some_sub_dir/file2.dart';
part 'some_sub_dir/file3.dart';
part 'some_sub_dir/file4.dart';
part 'some_sub_dir/file5.dart';
part 'some_sub_dir/file6.dart';
...
据我所知,当我创建新的 class 时,我的 IDE (WebStorm) 不会自动添加 part
语句。有什么办法可以避免使用这么多 part
吗?如果没有,每次添加新的 parts
的过程可以自动化吗?
我了解到:
part/part of 用于将库分成几个部分(脚本)。您可以看到 public 和私人成员。
导入 是 "call/use" 您图书馆中的另一个图书馆。您只能看到导入库的 public 个成员。
WebStorm 无法推断您希望脚本成为库的一部分。
我尽可能理解你的问题,我会尝试根据我在 Dart 中的经验来回答。
据我所知,您正试图将所有(或很多)项目文件作为一个库的一部分。是错误的观念。在 Dart 库中不是什么大事。这里有一些关于如何组织文件的建议。
- 不要试图将大量文件作为一个库的一部分。而是将每个文件保存为单独的库。
- 您可以在一个文件中保留几个 classes。但请确保 classes 一起为一个想法工作。
- 只有当一个库有很多 class 或一个 class 太大时,您才可以将一个库拆分成几个部分文件。但请确保所有这些文件都应该放在一个库中。
- 如果您不知道如何在库中组合 class,请将每个 class 保存在单独的库中。几天后你就会明白哪些 classes 一起玩了。
- 如果一个库中的 class 不仅在库中而且在其他库中都有使用 - 将其分离库。
- 将部件放在与主库文件相同的文件夹中。
- 如果库有部分将所有库文件放入单独的文件夹。
- 使用部分的相对链接。
- 始终使用到其他库的绝对链接。对你以后进行重构有帮助。
比如这是一个类似TODO列表应用的项目。所以,我们有视图 class:
// This is a view html component class. //
library todolist.list_viewer;
import 'package:todolist/task.dart'; // model class
class ListViewer extends HtmlElement {
// it showes list of tasks
}
class TodoRenderer extends HtmlElement {
// this is a renderer for one todo item
}
这是一个模型 class:
// This is a todo model task //
library todolist.task;
class TodoProvider {
List<TodoItem> todos;
String addItem(TodoItem new Todo) {
//...
}
}
class TodoItem {
String Author;
DateTime date;
}
现在看起来很简单,分成了独立的库。但是如果我们想添加 RecId
class 来保持 todo 数据库 id 就变得太复杂了。我们应该把它分成两个库:todo_provider
和 todo_model
并将 RecId
class 放在最后一个。现在又好了。
如果我们想再添加一个模型:一个User
,那么每个待办事项都可能有执行者或作者。我们不能只是把它 todo_model
。现在我们应该将 TodoItem
和 User
class 组合成 model
库。所以我们只需将 todo_model
class 重命名为 model
并添加 User
class 即可。
或者我们可以制作 user_model
库以保留 User
class,而不是最后一个操作。由于用户模型也有 recId
属性,我们应该将 RecId
class 提取到单独的库中。
这完全取决于我们的 class 有多庞大和复杂。