編寫優秀的代碼包括良好的評論和良好的變量名稱選擇。讓我們從一開始只是通過一行代碼行留言時間等,你可以更好地看到發生了什麼事情:
public static int[] rowSums(int[][] arr2D){
// A variable which is always 0
int total2 = 0;
// The actual output:
int a[] = new int[arr2D.length];
// For each row..
for(int x=0; x<arr2D.length; x++){
// For each column..
for(int n=0; n<arr2D[x].length;n++){
// Put 0 into the 2D array (this line is backwards):
arr2D[x][n] = total2;
// Add the 'total' (always 0) into the current output
a[x] = a[x] + total2;
}
}
// Return the output
return a;
}
共2條從未設置
好,所以希望這是一個更清晰一點,你的線路之一向後(你有一些可憐的變量命名選擇)。更好的東西看起來更像是這樣的:
public static int[] rowSums(int[][] arr2D){
// The actual output:
int totals[] = new int[arr2D.length];
// For each row..
for(int row=0; row<arr2D.length; row++){
// For each column..
for(int col=0; col<arr2D[row].length;col++){
// Get the column value:
int columnValue = arr2D[row][col];
// Add the column amount into the total:
totals[row] = totals[row] + columnValue;
}
}
// Return the output
return totals;
}
由於變量現在更加清晰,我們可以刪除多餘的評論逼到這樣的:
public static int[] rowSums(int[][] arr2D){
int totals[] = new int[arr2D.length];
for(int row=0; row<arr2D.length; row++){
for(int col=0; col<arr2D[row].length;col++){
int columnValue = arr2D[row][col];
totals[row] = totals[row] + columnValue;
}
}
return totals;
}
有人會認爲好的代碼甚至不應該需要註釋:-)(也許Javadoc是好的,但)。 –
@TimBiegeleisen我完全同意 - 對於剛開始的人來說,他們讓所有事情都變得更容易閱讀(並且也幫助了這些命名選擇)。 –
嗯,對我來說有點太冗長 –