1

ボタンをページに書き込む厄介なクラスを持つプロジェクトに参加しました。アプリはドキュメント マネージャーであり、ダウンロード、電子メール、印刷などのボタンのポップアップ リストがあります。ユーザーの役割とドキュメントの状態に応じて、さまざまなボタンが表示されます。

他の WTF の中には、次のようなものがあります。

bool showEditButton = document.docTypeId == documentEnum.docType.text && 
( document.statusId == documentEnum.docStatus.Editable || (user.UserStatus == userEnum.Status.SuperUser) || ( user.UserID == document.CreatedByUserId ) )

何が起こっているのかわからなくなるまで、などなど。

これがより深いアーキテクチャ上の欠陥の単なる副作用なのか、それとも許可とステータス値の混合をチェックするための良い方法があるのか​​ どうかはわかりません. これらのクレイジーな条件をメソッドにすべて入れて、それを忘れるべきですか? ただし、次のプログラマーがプロジェクトを継承するメリットはありません。

4

4 に答える 4

1

または、次を使用できます。

bool showEditButton = (document.statusId == documentEnum.docStatus.Editable); //show if Editable..
showEditButton |= (user.UserStatus == userEnum.Status.SuperUser); //or a superuser or
showEditButton |= (user.UserID == document.CreatedByUserId); //the Creator
showEditButton &= (document.docTypeId == documentEnum.docType.text); //and a text Doc

私はライアンの答えを好みますが、少なくともわずかに読みやすく、いくつかのコメントのためのより良い場所を与える別の方法のためにこれを捨てます。

于 2011-07-29T18:14:44.227 に答える
0

当分の間、あなたはそれを所有しています。それをリファクタリングするように割り当てられている場合は、リファクタリングしてください。他に差し迫った問題がある場合は、それらに対処しますが、可能であれば時間をかけてリファクタリングする必要があります (あまり良い仕事をしないでください。永続的な所有者になる可能性があります)。その他の質問、セキュリティなどについては、十分な情報がありません。

http://en.wikipedia.org/wiki/リファクタリング

于 2011-07-29T17:57:26.370 に答える