扑克手分析和清洁代码

时间:2016-03-10 17:43:17

标签: java coding-style poker

我有更多关于风格而非实施的问题。我正在开发扑克应用程序。它有一个存储所有必需数据的类,如五张卡。还有第二个结构,它模拟了FigureAnalyzer - 一段代码来确定,当手包含flush,两对或full时。总的来说,一切都很好。但它比我的前女友更难看。

这是一个确定手部组合的样本:

@Override
public int getFigureStrength(IHand hand) {
/*
 * analyze all possible pairs, triples, etc.
 */
    MultipleCardAnalyzer.anayzeMultipleCards(hand, figureList);
    hand.setFigureAnalyzer(this);

    if (isPoker()) {
        if (isRoyalPoker())
            return 10;
        return 9;
    }

    else if (isFourOfAKind())
        return 8;

    else if (isFull())
        return 7;

    else if (isFlush())
        return 6;

    else if (isStraight())
        return 5;

    else if (areThreeOfAKind())
        return 4;

    else if (areTwoPairs())
        return 3;

    else if (isPair())
        return 2;
    else
        return 1;
}

数字在比较双手时非常有用。但是......它太可怕了。任何人都可以指出我或者只是建议,我怎样才能让它变得更漂亮?

1 个答案:

答案 0 :(得分:2)

定义具有这些值的有意义名称的常量; enum可能在这里很有用。