已关闭,此问题为opinion-based。目前不接受答复。
**想改善这个问题吗?**更新问题,以便editing this post可以用事实和引用来回答。
3天前关闭。
Improve this question
我见过像ResoCoder的Clean Architecture方法这样的项目,在域层中使用包,比如equatable:
import 'package:equatable/equatable.dart';
class UserEntity extends Equatable {
final String displayName;
final String photoUrl;
final String email;
UserEntity({
required this.displayName,
required this.photoUrl,
required this.email,
});
@override
List<Object?> get props => [
displayName,
photoUrl,
email
];
}
和dartz使用函数式编程:
class SignInUsecase implements Usecase<NoInput, UserEntity> {
final IAuthRepository repository;
SignInUsecase(this.repository);
@override
Future<Either<Failure, UserEntity>> call(NoInput param) async {
return await repository.signIn();
}
}
有没有更好的方法来处理这个问题,而不需要在域层中使用这些包?
1条答案
按热度按时间vzgqcmou1#
这不一定是一个“坏做法”,这是一个权衡的决定:如果你在你的应用程序的核心中允许某些库,那么在将来可能很难摆脱这些库或者用其他的库来替换它们。另一方面,人们不想总是重新发明轮子。
因此,你需要为你的代码库决定你真正需要的库,你相信它仍然会在那里,并在未来几年内维护,你最好不要让哪个库进入你的应用程序的核心,而是“推”到一些接口/抽象后面,以确保它可以在以后轻松地被替换。
就我个人而言,我试图最小化对领域层中“外部库”的依赖,这在大多数项目中会导致零外部依赖,除了我的“开发平台”(主要是dotnet)的核心库。