1

if else 条件をネストしました。私が望むチェックの流れは、以下のコードで説明されています。

if (HiringManagerAPPROVED)
{ 
    //email reporting gropu
}
else if (ReportingGroupAPPROVED)
{ 
    //email Hiringmanager
}
else if (HiringManagerReAPPROVED)
{ 
    //email PPO
}                }
else if (PpoAPPROVED)
{ 
    //email Finance
}
else if (FinanceAPPROVED)
{ 
    //email president & COO
}
else if (PresidentCooAPPROVED)
{ 
    //email hr
}
else if (HRAPPROVED)
{
    //email Hiring Manager
}

チェックの流れをそのままにして、チェック回数を減らす方法。

4

3 に答える 3

5

FinancePpo、およびHiringManagerユーザーである可能性がありますが、私にはロールのように見えます。

IsApprovedいずれにせよ、最終的には、それぞれにフィールドを持つ Role オブジェクトのコレクションを作成することになるでしょう。

public class Role
{
    public RoleType Type { get; set; }
    public bool IsApproved { get; set; }
    public string EmailAddress { get; set; }
    //etc
}

public enum RoleType
{
    Finance,
    HiringManager,
    //etc
}

それを行った後、ifステートメントをこれに置き換えることができます

List<Role> roles = new List<Role>();
// populate your roles how you like

foreach (Role role in roles)
{
    if (role.IsApproved)
    {
        // email roll
    }
}

これらのロールで行うことが、承認された場合に電子メールを送信することだけである場合、このアプローチではあまり利点が得られないことに注意してください.

利点は、ロールがどのように承認されているかに基づいて、または他の基準に基づいて、ロールで他のことをしなければならない場合に得られます。

于 2014-10-16T16:25:09.510 に答える
0

私はこれを読みすぎているかもしれませんが、雇用プロセスの状態が何が起こり、次に何が起こるかを決定する単純なワークフローを実行しようとしているようです. アーキテクチャについて詳しく知らなくても、これは単純なステート マシンを採用するのに非常に適した場所のように感じます。または、実際のワークフローを作成するためのコマンド パターンを使用する可能性が高くなります。これにより、各ステップを適切にカプセル化してテストすることができ、将来何が起こるかという点でより柔軟になることもできます。

それを行うにはいくつかの異なる方法がありますが、その 1 つがここで詳しく説明されています

于 2014-10-16T16:35:42.207 に答える
0

おそらくこれをスイッチに変えたいと思うでしょう。ここにいくつかの擬似コードがあります:

switch($group) {
  case "HiringManager":
    // do stuff
    break;

  case "Reporting":
    // do stuff
    break;

  case "HiringManagerRe":
    // do stuff
    break;

  case "Ppo":
    // do stuff
    break;

  case "Finance":
    // do stuff
    break;

  case "PresidentCoo":
    // do stuff
    break;

  case "HR":
    // do stuff
    break;
}

おそらくやりたいことは、それぞれの場合に電子メールアドレスを設定し、設定したアドレスに基づいてメールを送信することです.

send_email($addresses);
于 2014-10-16T16:28:27.933 に答える