使模式匹配成为漂亮的代码

时间:2017-10-25 07:47:33

标签: wpf refactoring resharper

所以..我在WPF中得到了这个转换器,它应该将Orientation作为参数。如果没有,转换器应该只将方向指定为水平。

这是我的代码:

 Orientation orientation = Orientation.Horizontal;
if (parameter is Orientation)
     orientation = (Orientation) parameter;

但是,resharper在“is”下摆动,并暗示我“合并演员与类型检查”。使用重构,它看起来像这样:

Orientation orientation = Orientation.Horizontal;
if (parameter is Orientation orientation1)
    orientation = orientation1;

使用虚拟变量。

我认为我自己创造的是最好的和最干净的,但是resharper不同意。你会怎么写这段代码?

我知道resparper可以配置,但我大多喜欢这种建议。它只是在处理结构时似乎是疯狂的。

1 个答案:

答案 0 :(得分:0)

在我看来,R#通过使用最新的c#功能使代码变得复杂。你的变体很好而且清晰,我没有看到需要改变它(它只有3行!)

但是考虑使用as运算符回退到默认值(需要可空类型Orientation?

object parameter1 = Orientation.Vertical;

Orientation o1 = (parameter1 as Orientation?) ?? Orientation.Horizontal;

object parameter2 = "Vertical";

Orientation o2 = (parameter2 as Orientation?) ?? Orientation.Horizontal;

返回

Orientation.Vertical
Orientation.Horizontal