我有一个用来查询数据库的模型类。一切正常,没有任何问题。我现在正在尝试改进我的模型类中的代码。以下是代码
class HumanFilter {
double age, maxAge, minAge, weight, minWeight, maxWeight, tall, minTall, maxTall, waist, minWaist, maxWaist;
set setMaxAge(String s) {
if (s != null) {
double parsed = double.tryParse(s) != null ? double.parse(s) : maxAge;
minAge = minAge != null && parsed != null
? parsed <= minAge && minAge != 0 ? parsed - 1 : minAge
: null;
maxAge = parsed;
age = parsed != null ? null : age;
} else {
maxAge = null;
}
}
set setMinAge(String s) {
if (s != null) {
double parsed = double.tryParse(s) != null ? double.parse(s) : minAge;
minAge = parsed;
maxAge = maxAge != null && parsed != null
? parsed >= maxAge ? parsed + 1 : maxAge
: null;
age = parsed != null ? null : age;
} else {
minAge = null;
}
}
set setAge(String s) {
if (s != null) {
double parsed = double.tryParse(s) != null ? double.parse(s) : age;
age = parsed != null ? parsed : age;
minAge = parsed != null ? null : minAge;
maxAge = parsed != null ? null : maxAge;
} else {
age = null;
}
}
// another setters for the rest of the parameters which are same as the code above
}其余参数的setter与我为age提供的setter完全相同。例如,权重的设置器与年龄设置器相同,但设置minWeight、maxWeight和weight而不是minAge、maxAge和age.minTall和minAge等也是如此。
我想创建一个3个方法,它将获取min,max和nominal值,并返回3个值的列表或映射,然后我可以在setter方法中分配这些值,但是我也注意到min和max setter几乎是相同的,所以也可以重用。我只是找不到一个像样的方法来重用(智能)代码。
发布于 2020-03-10 23:36:50
分解副本的一种方法是提取类中的最小/最大/当前值:
class Interval {
double min;
double max;
double current;
}这意味着在Interval上可以使用其中之一,而不是setMinAge+setMaxAge+...
class Interval {
double min;
double max;
double current;
set setMax(String s) {
if (s != null) {
var parsed = double.tryParse(s) != null ? double.parse(s) : max;
min = min != null && parsed != null
? parsed <= min && min != 0 ? parsed - 1 : min
: null;
max = parsed;
current = parsed != null ? null : current;
} else {
max = null;
}
}
// setMin
// setCurrent
}https://stackoverflow.com/questions/60618589
复制相似问题