Because assert (...); the function of a statement is to place a verification condition. Its function is different from that of a General function statement. If different function codes use the same indentation, the Code is not clearly read. For example:
....
Assert (k> 0 );
Int col_num = This-> numcols ();
Assert (col_num> 0 );
Int row_num = This-> numrows ();
Int I = 0;
Int J = ++ I;
Int arr_index = r * col_num + C;
Assert (arr_index <col_num * row_num );
...
Compared with the following code:
Assert (k> 0 );
Int col_num = This-> numcols ();
Assert (col_num> 0 );
Int row_num = This-> numrows ();
Int I = 0;
Int J = ++ I;
Int arr_index = r * col_num + C;
Assert (arr_index <col_num * row_num );
The latter seems clearer. The Code of different functions is divided into different indentation, so it is easy to concentrate the attention of the code readers in functional code.