私は.NETで書かれたレガシーWebアプリケーションに取り組んでいます。アプリケーションの開始時に、ログインしているユーザータイプを確認し、ユーザータイプに基づいて表示するUI要素を決定します。
これを実装する方法は、各ユーザータイプのケースを処理する一連のifステートメントと、それに続くユーザータイプに基づいてさまざまなUI要素を表示または非表示に設定する関数呼び出しです。問題は、関数呼び出しがやや面倒だということです。次の約500行があります。
setTabsVisible(true, true, true, true, true, true, true, true, true, true, false, false);
if (!locked)
{
setActionButtonsVisibile(true, false, true, "Submit", "");
script += setTabsReadOnly(false, false, false, false, false, false, true, false, false, false, true, true);
script += setSubTabsReadOnly(true, true, false, true, true, true, false, false, true, true, false, true);
}
script += setSubTabsVisible(false, false, false, false, false, false, true, false, false, true, true);
true、true、false、trueなどは、一見しただけではあまり読みやすくありません。オンまたはオフになっているものを確認するには、関数にカーソルを合わせ、ブール値をパラメーターリストに一致させる必要があります。
したがって、より良い解決策は、ビット単位のORで結合された定数から構築されたビットフィールドである可能性があると考えていました。このように、関数呼び出しは次のようになります。
setTabsReadOnly(notesTab | documentsTab | signoffTab | etc);
ただし、C#はビットフィールドをサポートしていないようです。より良い解決策はありますか?それとも変更する価値がありますか?