我的朋友和我今天想知道我们是否可以优化部分代码。我找不到任何类似的东西,我的意思是有办法做到这一点,但它与我们所拥有的有点不同,而且从来没有关于优化和范围的改变。 所以当前的代码是:
if (((this.TempMingraph + skok) < Convert.ToInt32(datalegend[0])) ||
((this.TempMingraph - skok) > Convert.ToInt32(datalegend[0])))
this.TempMingraph = Convert.ToInt32(datalegend[0]);
if (((this.TempMaxgraph + skok) < Convert.ToInt32(datalegend[1])) ||
((this.TempMaxgraph - skok) > Convert.ToInt32(datalegend[1])))
this.TempMaxgraph = Convert.ToInt32(datalegend[1]);
if (this.ScaleVoltageFlag)
{
ActualThread_ChartAxesScaleMinMax(chart, TempMingraph - skok, TempMaxgraph + skok);
说明: 我们有两个来自&#34; outside&#34;的值,我们只能将它们转换为INT32,因为我们需要处理值而不是字符串,这些值是datalegend [0]和datalegend [1]。值始终为整数,范围为几千,永远不等于0.
我们的助手值是:TempMingraph和TempMaxgraph。我们需要检查两者上完全相同但使用不同的值:对于TempMingraph,我们必须使用datalegend [0]的外部值,而对于TempMaxgraph,我们必须使用datalegend [1]的外部值。
所以每个&#34; Temp&#34;总是整数的价值是&#34;基数&#34;一个范围来检查。让我们来看TempMingraph所以要检查的范围是从TempMingraph - skok(skok equals int = 10)到TempMingraph + skok。我们需要检查datalegend [0]是否在该范围内。如果没有,TempMingraph = datalegend [0],这很容易。然后对于TempMaxgraph完全相同,但与datalegend [1]相比。恒定的skok保持不变。最后如果不重要,只需设置新值。这是最好/最快的方式吗?如果没有,你会如何解决它?
答案 0 :(得分:1)
以下是我可能会这样做的原因 - 由于两个条件都在重复,我会将它们移到一个方法中。此外,一旦只处理int值并删除所有不必要的括号,它们就会简单得多:
this.TempMingraph = CalculateGraphValue(this.TempMingraph, skok, Convert.ToInt32(datalegend[0]));
this.TempMaxgraph = CalculateGraphValue(this.TempMingraph, skok, Convert.ToInt32(datalegend[1]));
private int CalculateGraphValue(int graph, int skok, int datalegend)
{
return (graph + skok < datalegend || graph - skok > datalegend) ? datalegend : graph;
}
该方法只返回datalegend
或graph
的值,具体取决于graph
,skok
和datalegend
的值。