gpt4 book ai didi

java - 方法可以可读并且更短吗?

转载 作者:行者123 更新时间:2023-12-01 15:51:31 26 4
gpt4 key购买 nike

我写了这个方法:

private int maxSequence (char player , Cell c)
{
int row = c.getRow();
int col = c.getCol();
int maxVert = 0;
int maxHor = 0;
int maxDiag = 0;

if (player == 'O')
{

for (int j = 0; j < _board[0].length; j++)
{
if ( (_board[col][row+j] == 'O') || (_board[col][row-j] == 'O') )
{
maxVert++;
}

if ( (_board[col+j][row] == 'O') || (_board[col-j][row] == 'O') )
{
maxHor++;
}

if ( (_board[col+j][row+j] == 'O') || (_board[col-j][row-j] == 'O') )
{
maxDiag++;
}
}
}

if (player == 'X')
{
for (int j = 0; j < _board[0].length; j++)
{
if ( (_board[col][row+j] == 'O') || (_board[col][row-j] == 'X') )
{
maxVert++;
}

if ( (_board[col+j][row] == 'O') || (_board[col-j][row] == 'X') )
{
maxHor++;
}

if ( (_board[col+j][row+j] == 'O') || (_board[col-j][row-j] == 'X') )
{
maxDiag++;
}
}
}

if ( (maxDiag >= maxVert) && (maxDiag >= maxHor) )
{
return maxDiag;
}

else if ( (maxVert >= maxDiag) && (maxVert >= maxHor) )
{
return maxVert;
}

else
{
return maxHor;
}
}

我想知道是否有办法改进该方法,使其可读且\或更短?

最佳答案

使用O作为变量名是一个坏主意。 O 很容易被误读或误输入为 0,反之亦然,正如您在几个地方所做的那样

在这种情况下,出于上述原因,我认为您应该使用诸如 O_PLAYERO_MARKER 之类的内容,而不是 O区分代码中常量的两种不同含义。 (事实上​​,根据更大的上下文,我可能为这两种情况创建了几个 enum 类型。)

将左大括号放在前一行可以节省空间并且(IMO)同样可读;例如

if (cond) {
// blah
} else {
// blah
}

if (cond) 
{
// blah
}
else
{
// blah
}

用 _ 作为实例变量前缀违反了 Java 命名标准。

最后,最后 12 行可以重写为:

return Math.max(maxHor, Math.max(maxVert, maxDiag));

关于java - 方法可以可读并且更短吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5921965/

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