是用更多的代码一次求值好,还是用更少的代码多次求值好?
本文关键字:代码 一次 | 更新日期: 2023-09-27 18:15:56
对bool
进行一次评估是否更好,但有更多这样的代码
if (klient.Podmioty.PodmiotRodzaj == "Osoba") {
textImie.Enabled = true;
textNazwisko.Enabled = true;
textNazwa.Enabled = false;
} else {
textImie.Enabled = false;
textNazwisko.Enabled = false;
textNazwa.Enabled = true;
}
与
比较 textImie.Enabled = klient.Podmioty.PodmiotRodzaj == "Osoba";
textNazwisko.Enabled = klient.Podmioty.PodmiotRodzaj == "Osoba";
textNazwa.Enabled = klient.Podmioty.PodmiotRodzaj != "Osoba";
这是一个通用的问题,也许这个小例子是微优化,但我想知道是否重复使用相同的bool不被认为是坏代码。
可能有用的注意是,klient.Podmioty.PodmiotRodzaj
实际上是由实体框架带来的SQL变量
计算一次并使用结果:
var conditionValue = (klient.Podmioty.PodmiotRodzaj == "Osoba");
textImie.Enabled = conditionValue;
textNazwisko.Enabled = conditionValue;
textNazwa.Enabled = !conditionValue;
第一个选项,更少的计算时间和不复制代码…
或选项C:
bool value = klient.Podmioty.PodmiotRodzaj == "Osoba";
textImie.Enabled = value;
textNazwisko.Enabled = value;
textNazwa.Enabled = !value;
第一个是常见的答案,第二个很难读懂。但是,由于您只将bool设置为与条件相同的值,因此还有第三个选项:
bool t = (klient.podmioty.PodmiotRodzaj == "Osaba");
TextImed.Enabled = t;
TextNazwisko.Enabled = t;
TextNazwa.Enabled = !t;
(在电话上,所以我可能把变量名搞错了)这可能比第一个选项略显不清晰,但很简短(并避免了代码分叉)。