Refactor if statements that check for different conditionsNested if statements with 3 different parametersWeb service performing different tasksHow to refactor multiple if statements?Simplistic (dumb) Card FighterTransaction handling for multiple SQL statementsChecking if two numbers have the same signPoker Hand EvaluatorPoker hand probability — tally best 5 from all combination of 7My attempt at a Blackjack gameGame tournament service - core logic for matchmaking and results

Why should universal income be universal?

250 Floor Tower

How to indicate a cut out for a product window

What is this called? Old film camera viewer?

What prevents the use of a multi-segment ILS for non-straight approaches?

Should I stop contributing to retirement accounts?

When were female captains banned from Starfleet?

Lowest total scrabble score

Not using 's' for he/she/it

What if a revenant (monster) gains fire resistance?

Removing files under particular conditions (number of files, file age)

The IT department bottlenecks progress. How should I handle this?

The screen of my macbook suddenly broken down how can I do to recover

How can Trident be so inexpensive? Will it orbit Triton or just do a (slow) flyby?

Store Credit Card Information in Password Manager?

Yosemite Fire Rings - What to Expect?

Is the U.S. Code copyrighted by the Government?

Fear of getting stuck on one programming language / technology that is not used in my country

Electoral considerations aside, what are potential benefits, for the US, of policy changes proposed by the tweet recognizing Golan annexation?

Open a doc from terminal, but not by its name

Are the IPv6 address space and IPv4 address space completely disjoint?

If a character has darkvision, can they see through an area of nonmagical darkness filled with lightly obscuring gas?

Did Swami Prabhupada reject Advaita?

How do I find all files that end with a dot



Refactor if statements that check for different conditions


Nested if statements with 3 different parametersWeb service performing different tasksHow to refactor multiple if statements?Simplistic (dumb) Card FighterTransaction handling for multiple SQL statementsChecking if two numbers have the same signPoker Hand EvaluatorPoker hand probability — tally best 5 from all combination of 7My attempt at a Blackjack gameGame tournament service - core logic for matchmaking and results













0












$begingroup$


Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).



I'm working on refactoring an old poker game, which is a .NET Framework console application, and I came across this method.



 /// <summary>
/// Evaluates the value of the player hand and computer hand.
/// </summary>
/// <param name="pComputerHand">The computer's current hand.</param>
/// <param name="pPlayerHand">The player's current hand.</param>
/// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)

// Stores the value of the player and computer hands.
int playerHandValue = 0;
int computerHandValue = 0;

// Evaluates the value of computer hand
foreach(SuperCard card in pComputerHand)

computerHandValue += (int)card.CardRank;


// Evaluates the value of player hand
foreach(SuperCard card in pPlayerHand)

playerHandValue += (int)card.CardRank;


// If there is a royal flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))

Console.WriteLine("nBoth players have a royal flush!");
return false;


// If there is a royal flush in the player's hand, the player won.
if (PokerHands.RoyalFlush(pPlayerHand))

Console.WriteLine("nYou have a royal flush!");
return true;


// If there is a royal flush in the computer's hand, the player lost.
if (PokerHands.RoyalFlush(pComputerHand))

Console.WriteLine("nThe computer has a royal flush!");
return false;


#region Straight Flush
// If there is a straight flush in the computer's hand and the player's hand, the player lost.
if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))

Console.WriteLine("nBoth players have a straight flush!");
return false;


// If there is a straight flush in the player's hand, the player won.
if (PokerHands.StraightFlush(pPlayerHand))

Console.WriteLine("nYou have a straight flush!");
return true;


// If there is a straight flush in the computer's hand, the player lost.
if (PokerHands.StraightFlush(pComputerHand))

Console.WriteLine("nThe computer has a straight flush!");
return false;

#endregion


#region Four Of A Kind
// If there is a four of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))

Console.WriteLine("nBoth players have a four of a kind!");
return false;


// If there is a four of a kind in the player's hand, the player won.
if (PokerHands.FourOfAKind(pPlayerHand))

Console.WriteLine("nYou have a four of a kind!");
return true;


// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FourOfAKind(pComputerHand))

Console.WriteLine("nThe computer has four of a kind!");
return false;

#endregion


#region Full House
// If there is a full house in the computer's hand and the player's hand, the player lost.
if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))

Console.WriteLine("nBoth players have a full house!");
return false;


// If there is a full house in the player's hand, the player won.
if (PokerHands.FullHouse(pPlayerHand))

Console.WriteLine("nYou have a full house!");
return true;


// If there is a four of a kind in the computer's hand, the player lost.
if (PokerHands.FullHouse(pComputerHand))

Console.WriteLine("nThe computer has a full house!");
return false;

#endregion


#region Flush
// If there is a flush in the player hand and the computer hand, the player lost.
if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))

Console.WriteLine("nBoth players have a flush!");
return false;


// If there is a flush in the player hand, the player won.
if (PokerHands.Flush(pPlayerHand))

Console.WriteLine("nYou have a flush!");
return true;


// If there is a flush in the computer hand, the player lost.
if (PokerHands.Flush(pComputerHand))

Console.WriteLine("nThe computer has a flush!");
return false;

#endregion


#region Straight
// If there is a straight in the computer's hand and the player's hand, the player lost.
if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))

Console.WriteLine("nBoth players have a straight!");
return false;


// If there is a straight in the player's hand, the player won.
if (PokerHands.Straight(pPlayerHand))

Console.WriteLine("nYou have a straight!");
return true;


// If there is a straight in the computer's hand, the player lost.
if (PokerHands.Straight(pComputerHand))

Console.WriteLine("nThe computer has a straight!");
return false;

#endregion


#region Three Of A Kind
// If there is a three of a kind in the computer's hand and the player's hand, the player lost.
if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))

Console.WriteLine("nBoth players have a three of a kind!");
return false;


// If there is a three of a kind in the player's hand, the player won.
if (PokerHands.ThreeOfAKind(pPlayerHand))

Console.WriteLine("nYou have a three of a kind!");
return true;


// If there is a three of a kind in the computer's hand, the player lost.
if (PokerHands.ThreeOfAKind(pComputerHand))

Console.WriteLine("nThe computer has a three of a kind!");
return false;

#endregion


#region Two Pair
// If there is a two pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))

Console.WriteLine("nBoth players have a two pair!");
return false;


// If there is a two pair in the player's hand, the player won.
if (PokerHands.TwoPair(pPlayerHand))

Console.WriteLine("nYou have a two pair!");
return true;


// If there is a two pair in the computer's hand, the player lost.
if (PokerHands.TwoPair(pComputerHand))

Console.WriteLine("nThe computer has a two pair!");
return false;

#endregion


#region One Pair
// If there is a one pair in the computer's hand and the player's hand, the player lost.
if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))

Console.WriteLine("nBoth players have a one pair!");
return false;


// If there is a one pair in the player's hand, the player won.
if (PokerHands.OnePair(pPlayerHand))

Console.WriteLine("nYou have a one pair!");
return true;


// If there is a one pair in the computer's hand, the player lost.
if (PokerHands.OnePair(pComputerHand))

Console.WriteLine("nThe computer has a one pair!");
return false;

#endregion

// If the player's hand value is greater than the computer's hand value, the player won.
if (playerHandValue > computerHandValue)

return true;


// If the player's hand value is less than or equal to the computer's hand value, the player lost.
if (playerHandValue <= computerHandValue)

return false;


// Satisfies all code paths must return a value error.
else

return false;



// end of CompareHands()


This is what the class diagram for the project looks like:
Poker Class Diagram



My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.









share







New contributor




Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$
















    0












    $begingroup$


    Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).



    I'm working on refactoring an old poker game, which is a .NET Framework console application, and I came across this method.



     /// <summary>
    /// Evaluates the value of the player hand and computer hand.
    /// </summary>
    /// <param name="pComputerHand">The computer's current hand.</param>
    /// <param name="pPlayerHand">The player's current hand.</param>
    /// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
    private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)

    // Stores the value of the player and computer hands.
    int playerHandValue = 0;
    int computerHandValue = 0;

    // Evaluates the value of computer hand
    foreach(SuperCard card in pComputerHand)

    computerHandValue += (int)card.CardRank;


    // Evaluates the value of player hand
    foreach(SuperCard card in pPlayerHand)

    playerHandValue += (int)card.CardRank;


    // If there is a royal flush in the computer's hand and the player's hand, the player lost.
    if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))

    Console.WriteLine("nBoth players have a royal flush!");
    return false;


    // If there is a royal flush in the player's hand, the player won.
    if (PokerHands.RoyalFlush(pPlayerHand))

    Console.WriteLine("nYou have a royal flush!");
    return true;


    // If there is a royal flush in the computer's hand, the player lost.
    if (PokerHands.RoyalFlush(pComputerHand))

    Console.WriteLine("nThe computer has a royal flush!");
    return false;


    #region Straight Flush
    // If there is a straight flush in the computer's hand and the player's hand, the player lost.
    if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))

    Console.WriteLine("nBoth players have a straight flush!");
    return false;


    // If there is a straight flush in the player's hand, the player won.
    if (PokerHands.StraightFlush(pPlayerHand))

    Console.WriteLine("nYou have a straight flush!");
    return true;


    // If there is a straight flush in the computer's hand, the player lost.
    if (PokerHands.StraightFlush(pComputerHand))

    Console.WriteLine("nThe computer has a straight flush!");
    return false;

    #endregion


    #region Four Of A Kind
    // If there is a four of a kind in the computer's hand and the player's hand, the player lost.
    if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))

    Console.WriteLine("nBoth players have a four of a kind!");
    return false;


    // If there is a four of a kind in the player's hand, the player won.
    if (PokerHands.FourOfAKind(pPlayerHand))

    Console.WriteLine("nYou have a four of a kind!");
    return true;


    // If there is a four of a kind in the computer's hand, the player lost.
    if (PokerHands.FourOfAKind(pComputerHand))

    Console.WriteLine("nThe computer has four of a kind!");
    return false;

    #endregion


    #region Full House
    // If there is a full house in the computer's hand and the player's hand, the player lost.
    if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))

    Console.WriteLine("nBoth players have a full house!");
    return false;


    // If there is a full house in the player's hand, the player won.
    if (PokerHands.FullHouse(pPlayerHand))

    Console.WriteLine("nYou have a full house!");
    return true;


    // If there is a four of a kind in the computer's hand, the player lost.
    if (PokerHands.FullHouse(pComputerHand))

    Console.WriteLine("nThe computer has a full house!");
    return false;

    #endregion


    #region Flush
    // If there is a flush in the player hand and the computer hand, the player lost.
    if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))

    Console.WriteLine("nBoth players have a flush!");
    return false;


    // If there is a flush in the player hand, the player won.
    if (PokerHands.Flush(pPlayerHand))

    Console.WriteLine("nYou have a flush!");
    return true;


    // If there is a flush in the computer hand, the player lost.
    if (PokerHands.Flush(pComputerHand))

    Console.WriteLine("nThe computer has a flush!");
    return false;

    #endregion


    #region Straight
    // If there is a straight in the computer's hand and the player's hand, the player lost.
    if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))

    Console.WriteLine("nBoth players have a straight!");
    return false;


    // If there is a straight in the player's hand, the player won.
    if (PokerHands.Straight(pPlayerHand))

    Console.WriteLine("nYou have a straight!");
    return true;


    // If there is a straight in the computer's hand, the player lost.
    if (PokerHands.Straight(pComputerHand))

    Console.WriteLine("nThe computer has a straight!");
    return false;

    #endregion


    #region Three Of A Kind
    // If there is a three of a kind in the computer's hand and the player's hand, the player lost.
    if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))

    Console.WriteLine("nBoth players have a three of a kind!");
    return false;


    // If there is a three of a kind in the player's hand, the player won.
    if (PokerHands.ThreeOfAKind(pPlayerHand))

    Console.WriteLine("nYou have a three of a kind!");
    return true;


    // If there is a three of a kind in the computer's hand, the player lost.
    if (PokerHands.ThreeOfAKind(pComputerHand))

    Console.WriteLine("nThe computer has a three of a kind!");
    return false;

    #endregion


    #region Two Pair
    // If there is a two pair in the computer's hand and the player's hand, the player lost.
    if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))

    Console.WriteLine("nBoth players have a two pair!");
    return false;


    // If there is a two pair in the player's hand, the player won.
    if (PokerHands.TwoPair(pPlayerHand))

    Console.WriteLine("nYou have a two pair!");
    return true;


    // If there is a two pair in the computer's hand, the player lost.
    if (PokerHands.TwoPair(pComputerHand))

    Console.WriteLine("nThe computer has a two pair!");
    return false;

    #endregion


    #region One Pair
    // If there is a one pair in the computer's hand and the player's hand, the player lost.
    if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))

    Console.WriteLine("nBoth players have a one pair!");
    return false;


    // If there is a one pair in the player's hand, the player won.
    if (PokerHands.OnePair(pPlayerHand))

    Console.WriteLine("nYou have a one pair!");
    return true;


    // If there is a one pair in the computer's hand, the player lost.
    if (PokerHands.OnePair(pComputerHand))

    Console.WriteLine("nThe computer has a one pair!");
    return false;

    #endregion

    // If the player's hand value is greater than the computer's hand value, the player won.
    if (playerHandValue > computerHandValue)

    return true;


    // If the player's hand value is less than or equal to the computer's hand value, the player lost.
    if (playerHandValue <= computerHandValue)

    return false;


    // Satisfies all code paths must return a value error.
    else

    return false;



    // end of CompareHands()


    This is what the class diagram for the project looks like:
    Poker Class Diagram



    My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.









    share







    New contributor




    Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
    Check out our Code of Conduct.







    $endgroup$














      0












      0








      0





      $begingroup$


      Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).



      I'm working on refactoring an old poker game, which is a .NET Framework console application, and I came across this method.



       /// <summary>
      /// Evaluates the value of the player hand and computer hand.
      /// </summary>
      /// <param name="pComputerHand">The computer's current hand.</param>
      /// <param name="pPlayerHand">The player's current hand.</param>
      /// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
      private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)

      // Stores the value of the player and computer hands.
      int playerHandValue = 0;
      int computerHandValue = 0;

      // Evaluates the value of computer hand
      foreach(SuperCard card in pComputerHand)

      computerHandValue += (int)card.CardRank;


      // Evaluates the value of player hand
      foreach(SuperCard card in pPlayerHand)

      playerHandValue += (int)card.CardRank;


      // If there is a royal flush in the computer's hand and the player's hand, the player lost.
      if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))

      Console.WriteLine("nBoth players have a royal flush!");
      return false;


      // If there is a royal flush in the player's hand, the player won.
      if (PokerHands.RoyalFlush(pPlayerHand))

      Console.WriteLine("nYou have a royal flush!");
      return true;


      // If there is a royal flush in the computer's hand, the player lost.
      if (PokerHands.RoyalFlush(pComputerHand))

      Console.WriteLine("nThe computer has a royal flush!");
      return false;


      #region Straight Flush
      // If there is a straight flush in the computer's hand and the player's hand, the player lost.
      if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))

      Console.WriteLine("nBoth players have a straight flush!");
      return false;


      // If there is a straight flush in the player's hand, the player won.
      if (PokerHands.StraightFlush(pPlayerHand))

      Console.WriteLine("nYou have a straight flush!");
      return true;


      // If there is a straight flush in the computer's hand, the player lost.
      if (PokerHands.StraightFlush(pComputerHand))

      Console.WriteLine("nThe computer has a straight flush!");
      return false;

      #endregion


      #region Four Of A Kind
      // If there is a four of a kind in the computer's hand and the player's hand, the player lost.
      if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))

      Console.WriteLine("nBoth players have a four of a kind!");
      return false;


      // If there is a four of a kind in the player's hand, the player won.
      if (PokerHands.FourOfAKind(pPlayerHand))

      Console.WriteLine("nYou have a four of a kind!");
      return true;


      // If there is a four of a kind in the computer's hand, the player lost.
      if (PokerHands.FourOfAKind(pComputerHand))

      Console.WriteLine("nThe computer has four of a kind!");
      return false;

      #endregion


      #region Full House
      // If there is a full house in the computer's hand and the player's hand, the player lost.
      if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))

      Console.WriteLine("nBoth players have a full house!");
      return false;


      // If there is a full house in the player's hand, the player won.
      if (PokerHands.FullHouse(pPlayerHand))

      Console.WriteLine("nYou have a full house!");
      return true;


      // If there is a four of a kind in the computer's hand, the player lost.
      if (PokerHands.FullHouse(pComputerHand))

      Console.WriteLine("nThe computer has a full house!");
      return false;

      #endregion


      #region Flush
      // If there is a flush in the player hand and the computer hand, the player lost.
      if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))

      Console.WriteLine("nBoth players have a flush!");
      return false;


      // If there is a flush in the player hand, the player won.
      if (PokerHands.Flush(pPlayerHand))

      Console.WriteLine("nYou have a flush!");
      return true;


      // If there is a flush in the computer hand, the player lost.
      if (PokerHands.Flush(pComputerHand))

      Console.WriteLine("nThe computer has a flush!");
      return false;

      #endregion


      #region Straight
      // If there is a straight in the computer's hand and the player's hand, the player lost.
      if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))

      Console.WriteLine("nBoth players have a straight!");
      return false;


      // If there is a straight in the player's hand, the player won.
      if (PokerHands.Straight(pPlayerHand))

      Console.WriteLine("nYou have a straight!");
      return true;


      // If there is a straight in the computer's hand, the player lost.
      if (PokerHands.Straight(pComputerHand))

      Console.WriteLine("nThe computer has a straight!");
      return false;

      #endregion


      #region Three Of A Kind
      // If there is a three of a kind in the computer's hand and the player's hand, the player lost.
      if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))

      Console.WriteLine("nBoth players have a three of a kind!");
      return false;


      // If there is a three of a kind in the player's hand, the player won.
      if (PokerHands.ThreeOfAKind(pPlayerHand))

      Console.WriteLine("nYou have a three of a kind!");
      return true;


      // If there is a three of a kind in the computer's hand, the player lost.
      if (PokerHands.ThreeOfAKind(pComputerHand))

      Console.WriteLine("nThe computer has a three of a kind!");
      return false;

      #endregion


      #region Two Pair
      // If there is a two pair in the computer's hand and the player's hand, the player lost.
      if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))

      Console.WriteLine("nBoth players have a two pair!");
      return false;


      // If there is a two pair in the player's hand, the player won.
      if (PokerHands.TwoPair(pPlayerHand))

      Console.WriteLine("nYou have a two pair!");
      return true;


      // If there is a two pair in the computer's hand, the player lost.
      if (PokerHands.TwoPair(pComputerHand))

      Console.WriteLine("nThe computer has a two pair!");
      return false;

      #endregion


      #region One Pair
      // If there is a one pair in the computer's hand and the player's hand, the player lost.
      if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))

      Console.WriteLine("nBoth players have a one pair!");
      return false;


      // If there is a one pair in the player's hand, the player won.
      if (PokerHands.OnePair(pPlayerHand))

      Console.WriteLine("nYou have a one pair!");
      return true;


      // If there is a one pair in the computer's hand, the player lost.
      if (PokerHands.OnePair(pComputerHand))

      Console.WriteLine("nThe computer has a one pair!");
      return false;

      #endregion

      // If the player's hand value is greater than the computer's hand value, the player won.
      if (playerHandValue > computerHandValue)

      return true;


      // If the player's hand value is less than or equal to the computer's hand value, the player lost.
      if (playerHandValue <= computerHandValue)

      return false;


      // Satisfies all code paths must return a value error.
      else

      return false;



      // end of CompareHands()


      This is what the class diagram for the project looks like:
      Poker Class Diagram



      My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.









      share







      New contributor




      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.







      $endgroup$




      Preface: I've perused the other related questions before creating this one but I believe that those solutions weren't applicable to my situation. I'll concede that its possible that I may not have understood a possible solution (if any).



      I'm working on refactoring an old poker game, which is a .NET Framework console application, and I came across this method.



       /// <summary>
      /// Evaluates the value of the player hand and computer hand.
      /// </summary>
      /// <param name="pComputerHand">The computer's current hand.</param>
      /// <param name="pPlayerHand">The player's current hand.</param>
      /// <returns>Returns true if the player won and false if the player lost. This value is stored in the the bool won variable.</returns>
      private static bool CompareHands(SuperCard[] pComputerHand, SuperCard[] pPlayerHand)

      // Stores the value of the player and computer hands.
      int playerHandValue = 0;
      int computerHandValue = 0;

      // Evaluates the value of computer hand
      foreach(SuperCard card in pComputerHand)

      computerHandValue += (int)card.CardRank;


      // Evaluates the value of player hand
      foreach(SuperCard card in pPlayerHand)

      playerHandValue += (int)card.CardRank;


      // If there is a royal flush in the computer's hand and the player's hand, the player lost.
      if (PokerHands.RoyalFlush(pPlayerHand) & PokerHands.RoyalFlush(pComputerHand))

      Console.WriteLine("nBoth players have a royal flush!");
      return false;


      // If there is a royal flush in the player's hand, the player won.
      if (PokerHands.RoyalFlush(pPlayerHand))

      Console.WriteLine("nYou have a royal flush!");
      return true;


      // If there is a royal flush in the computer's hand, the player lost.
      if (PokerHands.RoyalFlush(pComputerHand))

      Console.WriteLine("nThe computer has a royal flush!");
      return false;


      #region Straight Flush
      // If there is a straight flush in the computer's hand and the player's hand, the player lost.
      if (PokerHands.StraightFlush(pPlayerHand) & PokerHands.StraightFlush(pComputerHand))

      Console.WriteLine("nBoth players have a straight flush!");
      return false;


      // If there is a straight flush in the player's hand, the player won.
      if (PokerHands.StraightFlush(pPlayerHand))

      Console.WriteLine("nYou have a straight flush!");
      return true;


      // If there is a straight flush in the computer's hand, the player lost.
      if (PokerHands.StraightFlush(pComputerHand))

      Console.WriteLine("nThe computer has a straight flush!");
      return false;

      #endregion


      #region Four Of A Kind
      // If there is a four of a kind in the computer's hand and the player's hand, the player lost.
      if (PokerHands.FourOfAKind(pPlayerHand) & PokerHands.FourOfAKind(pComputerHand))

      Console.WriteLine("nBoth players have a four of a kind!");
      return false;


      // If there is a four of a kind in the player's hand, the player won.
      if (PokerHands.FourOfAKind(pPlayerHand))

      Console.WriteLine("nYou have a four of a kind!");
      return true;


      // If there is a four of a kind in the computer's hand, the player lost.
      if (PokerHands.FourOfAKind(pComputerHand))

      Console.WriteLine("nThe computer has four of a kind!");
      return false;

      #endregion


      #region Full House
      // If there is a full house in the computer's hand and the player's hand, the player lost.
      if (PokerHands.FullHouse(pPlayerHand) & PokerHands.FullHouse(pComputerHand))

      Console.WriteLine("nBoth players have a full house!");
      return false;


      // If there is a full house in the player's hand, the player won.
      if (PokerHands.FullHouse(pPlayerHand))

      Console.WriteLine("nYou have a full house!");
      return true;


      // If there is a four of a kind in the computer's hand, the player lost.
      if (PokerHands.FullHouse(pComputerHand))

      Console.WriteLine("nThe computer has a full house!");
      return false;

      #endregion


      #region Flush
      // If there is a flush in the player hand and the computer hand, the player lost.
      if (PokerHands.Flush(pPlayerHand) && PokerHands.Flush(pComputerHand))

      Console.WriteLine("nBoth players have a flush!");
      return false;


      // If there is a flush in the player hand, the player won.
      if (PokerHands.Flush(pPlayerHand))

      Console.WriteLine("nYou have a flush!");
      return true;


      // If there is a flush in the computer hand, the player lost.
      if (PokerHands.Flush(pComputerHand))

      Console.WriteLine("nThe computer has a flush!");
      return false;

      #endregion


      #region Straight
      // If there is a straight in the computer's hand and the player's hand, the player lost.
      if (PokerHands.Straight(pPlayerHand) & PokerHands.Straight(pComputerHand))

      Console.WriteLine("nBoth players have a straight!");
      return false;


      // If there is a straight in the player's hand, the player won.
      if (PokerHands.Straight(pPlayerHand))

      Console.WriteLine("nYou have a straight!");
      return true;


      // If there is a straight in the computer's hand, the player lost.
      if (PokerHands.Straight(pComputerHand))

      Console.WriteLine("nThe computer has a straight!");
      return false;

      #endregion


      #region Three Of A Kind
      // If there is a three of a kind in the computer's hand and the player's hand, the player lost.
      if (PokerHands.ThreeOfAKind(pPlayerHand) & PokerHands.ThreeOfAKind(pComputerHand))

      Console.WriteLine("nBoth players have a three of a kind!");
      return false;


      // If there is a three of a kind in the player's hand, the player won.
      if (PokerHands.ThreeOfAKind(pPlayerHand))

      Console.WriteLine("nYou have a three of a kind!");
      return true;


      // If there is a three of a kind in the computer's hand, the player lost.
      if (PokerHands.ThreeOfAKind(pComputerHand))

      Console.WriteLine("nThe computer has a three of a kind!");
      return false;

      #endregion


      #region Two Pair
      // If there is a two pair in the computer's hand and the player's hand, the player lost.
      if (PokerHands.TwoPair(pPlayerHand) & PokerHands.TwoPair(pComputerHand))

      Console.WriteLine("nBoth players have a two pair!");
      return false;


      // If there is a two pair in the player's hand, the player won.
      if (PokerHands.TwoPair(pPlayerHand))

      Console.WriteLine("nYou have a two pair!");
      return true;


      // If there is a two pair in the computer's hand, the player lost.
      if (PokerHands.TwoPair(pComputerHand))

      Console.WriteLine("nThe computer has a two pair!");
      return false;

      #endregion


      #region One Pair
      // If there is a one pair in the computer's hand and the player's hand, the player lost.
      if (PokerHands.OnePair(pPlayerHand) & PokerHands.OnePair(pComputerHand))

      Console.WriteLine("nBoth players have a one pair!");
      return false;


      // If there is a one pair in the player's hand, the player won.
      if (PokerHands.OnePair(pPlayerHand))

      Console.WriteLine("nYou have a one pair!");
      return true;


      // If there is a one pair in the computer's hand, the player lost.
      if (PokerHands.OnePair(pComputerHand))

      Console.WriteLine("nThe computer has a one pair!");
      return false;

      #endregion

      // If the player's hand value is greater than the computer's hand value, the player won.
      if (playerHandValue > computerHandValue)

      return true;


      // If the player's hand value is less than or equal to the computer's hand value, the player lost.
      if (playerHandValue <= computerHandValue)

      return false;


      // Satisfies all code paths must return a value error.
      else

      return false;



      // end of CompareHands()


      This is what the class diagram for the project looks like:
      Poker Class Diagram



      My question is whether its possible to extract a method (or several) out of these if statements, and provided that it is possible, how would I go about doing so? I also appreciate any other advice that you can offer like the regions being bad, for example.







      c# .net





      share







      New contributor




      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.










      share







      New contributor




      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.








      share



      share






      New contributor




      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.









      asked 51 secs ago









      Asel SAsel S

      12




      12




      New contributor




      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.





      New contributor





      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.






      Asel S is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
      Check out our Code of Conduct.




















          0






          active

          oldest

          votes











          Your Answer





          StackExchange.ifUsing("editor", function ()
          return StackExchange.using("mathjaxEditing", function ()
          StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
          StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
          );
          );
          , "mathjax-editing");

          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "196"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );






          Asel S is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216088%2frefactor-if-statements-that-check-for-different-conditions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          0






          active

          oldest

          votes








          0






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          Asel S is a new contributor. Be nice, and check out our Code of Conduct.









          draft saved

          draft discarded


















          Asel S is a new contributor. Be nice, and check out our Code of Conduct.












          Asel S is a new contributor. Be nice, and check out our Code of Conduct.











          Asel S is a new contributor. Be nice, and check out our Code of Conduct.














          Thanks for contributing an answer to Code Review Stack Exchange!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          Use MathJax to format equations. MathJax reference.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodereview.stackexchange.com%2fquestions%2f216088%2frefactor-if-statements-that-check-for-different-conditions%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          名間水力發電廠 目录 沿革 設施 鄰近設施 註釋 外部連結 导航菜单23°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.7113923°50′10″N 120°42′41″E / 23.83611°N 120.71139°E / 23.83611; 120.71139計畫概要原始内容臺灣第一座BOT 模式開發的水力發電廠-名間水力電廠名間水力發電廠 水利署首件BOT案原始内容《小檔案》名間電廠 首座BOT水力發電廠原始内容名間電廠BOT - 經濟部水利署中區水資源局

          Prove that NP is closed under karp reduction?Space(n) not closed under Karp reductions - what about NTime(n)?Class P is closed under rotation?Prove or disprove that $NL$ is closed under polynomial many-one reductions$mathbfNC_2$ is closed under log-space reductionOn Karp reductionwhen can I know if a class (complexity) is closed under reduction (cook/karp)Check if class $PSPACE$ is closed under polyonomially space reductionIs NPSPACE also closed under polynomial-time reduction and under log-space reduction?Prove PSPACE is closed under complement?Prove PSPACE is closed under union?

          Is my guitar’s action too high? Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern)Strings too stiff on a recently purchased acoustic guitar | Cort AD880CEIs the action of my guitar really high?Μy little finger is too weak to play guitarWith guitar, how long should I give my fingers to strengthen / callous?When playing a fret the guitar sounds mutedPlaying (Barre) chords up the guitar neckI think my guitar strings are wound too tight and I can't play barre chordsF barre chord on an SG guitarHow to find to the right strings of a barre chord by feel?High action on higher fret on my steel acoustic guitar