gpt4 book ai didi

java - 需要有关概念 "Do Not Repeat Yourself"编码实践的建议

转载 作者:行者123 更新时间:2023-11-29 04:09:11 25 4
gpt4 key购买 nike

我想更好地了解干净的编码和 OOP。我为此实例创建了一个国际象棋游戏。

现在,基本原则之一是:“不要重复自己”。现在我不知道如何创建一个包含 ChessFigures 列表的 Player 对象,而无需在 createFigures() 方法中重复自己。

在我的逻辑中,Player 类在每场比赛开始时持有 16 个数字。在这里我重复了 6 次。在这种情况下,建议的算法是什么?

public class Player {

private ArrayList<Figure> figures = new ArrayList<Figure>(16);
private ColorEnum playerColor;

Player(ColorEnum color){
this.playerColor = color;
createFigures();
}

private void createFigures(){
addFigure(8, PAWN);
addFigure(2, KNIGHT);
addFigure(2, BISHOP);
addFigure(2, ROOK);
addFigure(1, QUEEN);
addFigure(1, KING);
}

private void addFigure(int amount, FigureTypeEnum type){
for(int i = 0; i < amount; i++) {
this.figures.add(new Figure(type, this.playerColor));
}
}

public ArrayList<Figure> getFigures() {
return figures;
}
}

最佳答案

如果您真的想摆脱重复,您可以将计数添加到枚举中并对所有枚举值进行交互。

但我不会认为您的代码违反了 DRY 原则,因为您只有一种方法并且所有调用都有不同的参数。代码本身非常可读。

如果您在其他地方也有相同的调用,则会违反 DRY 原则。

关于java - 需要有关概念 "Do Not Repeat Yourself"编码实践的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56110791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com