我有这个重复的代码,我不确定我如何只用1种方法。重复2种方法制作成1种方法
public int isWonVertical()
{
for (int i = 0; i < columns; i++)
{
resetCounter();
for (int j = 0; j < rows; j++)
{
if (raster[j, i] == 1) counterPlayer1++;
else counterPlayer1 = 0;
if (raster[j, i] == 2) counterPlayer2++;
else counterPlayer2 = 0;
if (counterPlayer1 == tokenStreak) return 1;
if (counterPlayer2 == tokenStreak) return 2;
}
}
return 0;
}//isWonVertical
public int isWonHorizontal()
{
for (int i = 0; i < rows; i++)
{
resetCounter();
for (int j = 0; j < columns; j++)
{
if (raster[i, j] == 1) counterPlayer1++;
else counterPlayer1 = 0;
if (raster[i, j] == 2) counterPlayer2++;
else counterPlayer2 = 0;
if (counterPlayer1 == tokenStreak) return 1;
if (counterPlayer2 == tokenStreak) return 2;
}
}
return 0;
}//isWonHorizontal
的返回和resetCounter()我都可以放在1种方法。但是,如何确保for循环对于垂直/水平不同。我假设这是给参数提供的,然后检查是否给出了“垂直”或“水平”作为参数。但我不确定如何使这个实际工作。
谢谢。
你是否在为性能做这件事?方法是否单独调用? 'counterPlayerx'是否需要成为班级(或任何你拥有的)? –
我不确定你需要。你用两种不同的方法提出了两个不同的问题,这似乎是正确的。如果有的话,您可以将每种方法中的一些重复代码重构为第三种。 – aw04
@Cᴏʀʏ是的表现,但更多的是“不要两次写同一个代码”。 counterPlayerX只用于我使用这些方法的类。 – JSadones