肯定:
int lowIndex = 0;
int highIndex = 1;
if ( end[0].X.ConvertToMillimetres() == end[1].X.ConvertToMillimetres()
&& end[0].Y.ConvertToMillimetres() > end[1].Y.ConvertToMillimetres()
|| end[0].X.ConvertToMillimetres() != end[1].X.ConvertToMillimetres()
&& end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres())
{
lowIndex = 1;
highIndex = 0;
}
end[0].X.ConvertToMillimetres() != end[1].X.ConvertToMillimetres() && end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres()
总是会等同于end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres()
,所以因此:
int lowIndex = 0;
int highIndex = 1;
if ( end[0].X.ConvertToMillimetres() == end[1].X.ConvertToMillimetres()
&& end[0].Y.ConvertToMillimetres() > end[1].Y.ConvertToMillimetres()
|| end[0].X.ConvertToMillimetres() > end[1].X.ConvertToMillimetres())
{
lowIndex = 1;
highIndex = 0;
}
最后,我不确定ConvertToMillimetres的结果是什么或它是多么复杂/如果ConvertToMillimetres是时间密集型的以使用一些局部变量来捕获这些方法的值以减少计算,那么可能是有意义的......然后再次如果不是这样,则可能不值得污染你的本地范围,节省一点时间。可能,这是一个相当微不足道的功能,所以它不会很有优势。 (结尾[0]和结尾1可能会更好地作为局部变量,因为克里希纳说,甚至结束1 .X和结束1.Y等,但如果你这样做,不妨保存结果。)
//capture values
var end0Xm = end[0].X.ConvertToMillimetres();
var end1Xm = end[1].X.ConvertToMillimetres();
var end0Ym = end[0].Y.ConvertToMillimetres();
var end1Ym = end[1].Y.ConvertToMillimetres();
//define proper lowIndex, highIndex
int lowIndex = 0;
int highIndex = 1;
if ( end0Xm == end1Xm
&& end0Ym > end1Ym
|| end0Xm > end1Xm)
{
lowIndex = 1;
highIndex = 0;
}
这可能是保存测试以备将来使用的结果是有用的,也即消除了,如果块,这给少了机会为别人弄乱的未来。但是,你仍然必须有条件地做一些事情。下一个代码块假定您知道并了解C#'s ternary operator。
var end0Xm = end[0].X.ConvertToMillimetres();
var end1Xm = end[1].X.ConvertToMillimetres();
var end0Ym = end[0].Y.ConvertToMillimetres();
var end1Ym = end[1].Y.ConvertToMillimetres();
//define proper lowIndex, highIndex
bool testCase = (end0Xm == end1Xm
&& end0Ym > end1Ym
|| end0Xm > end1Xm);
int lowIndex = testCase? 1 : 0;
int highIndex = testCase? 0 : 1;
或者,也许你喜欢highIndex = !testcase? 1: 0
,甚至highIndex = 1 - lowIndex
。
等等等等。
[codereview.se] – Adam
为什么你需要转换为毫米来比较值?似乎多余。你自己也说过这是一个简单的代码块。因此是否需要使它更简单?可读性是国王。 –
[标题不需要标签](http://meta.stackexchange。com/questions/19190/should-questions-include-tags-in-titles) – Default