私は、真偽条件に基づいてフィルタを2つ以上選択する方法を書いています。私は複数のフィルタを選択する方法です。リファクタリング複数の場合代理人を使用してelse ifステートメント
public T SetPropertyTypes<T>(bool residential, bool commercial) where T : IPage, new()
{
// Residential Property Type Check logic
if (residential && (ElementIsNotActive(() => FindElement(By.CssSelector(propertyTypeResidentialCss))).Invoke(Driver)))
ClickButton(() => FindElement(By.CssSelector(propertyTypeResidentialCss)), "Residential");
else if (ElementIsActive(() => FindElement(By.CssSelector(propertyTypeResidentialCss))).Invoke(Driver))
ClickButton(() => FindElement(By.CssSelector(propertyTypeResidentialCss)), "Residential");
// Commercial Property Type Check logic
if (commercial && (ElementIsNotActive(() => FindElement(By.CssSelector(propertyTypeCommercialCss))).Invoke(Driver)))
ClickButton(() => FindElement(By.CssSelector(propertyTypeCommercialCss)), "Commercial");
else if (ElementIsActive(() => FindElement(By.CssSelector(propertyTypeCommercialCss))).Invoke(Driver))
ClickButton(() => FindElement(By.CssSelector(propertyTypeCommercialCss)), "Commercial");
}
後、私は、コードが冗長であり、私がC#に新しいそれは単純かつ非ambiguous.I'm作る場合、私は多くの特徴を認識していないよより良いかもしれない、どのような方法があることを見出しC#の機能を使ってこれをリファクタリングするには?
if-else-ifを使って変数をチェックしてみましたが、意図したとおりの動作ができませんでした。
あなたのコードは、現在機能しているようですし、あなたはそれを改善するために探しています。一般的に、これらの質問はこのサイトでは強すぎますが、[CodeReview.SE](// codereview.stackexchange.com/tour)のほうが良いかもしれません。このサイトよりも少し厳密であるため、[必要条件](// codereview.stackexchange.com/help/on-topic)を必ずお読みください。 – kayess
ReSharperツールを試す必要があります。 –
このコードで意図した論理ステップを英語で説明しておけば助かります。あなたは余分なチェックをしているようです。説明は: 'resididential'が' true'の場合、 'propertyTypeResidentialCss'で見つかった要素をクリックしてください。 – JeffC