在我们的 flutter 项目中,使用了很多 enum
和 extension
。我们中的一些人写 switch
语句,其他一些人使用 map
。我想知道在时间、记忆等方面,哪种做法被认为是最好的?
enum Animal { cat, dog, bird }
切换语句:
extension AnimalExtension on Animal {
String get name {
switch (this) {
case Animal.cat:
return 'Cat';
case Animal.dog:
return 'Dog';
case Animal.bird:
return 'Bird';
}
}
}
地图:
extension AnimalExtension on Animal {
String get name => {
Animal.cat: 'Cat',
Animal.dog: 'Dog',
Animal.bird: 'Bird',
}[this];
}
另外,对于 map
方法,创建一个 static const Map
是否比在每次调用时动态实例化它更好?
答案 0 :(得分:2)
我不会担心这么小的东西的速度,除非它是你计算的内部循环的核心。
切换有机会提高时间效率,地图的代码可能会更少(它重用了 Map.[]
代码)。地图绝对应该是常量。
如果您想优化性能和代码大小,我会选择:
String get name => const ['cat', 'dog', 'bird'][this.index];