Opened 4 years ago
Closed 4 years ago
#732 closed ожидается проверка (задача сдана)
HW #2
Reported by: | egipti.pavel | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
- баги в логике определения статуса партии (см. последнюю строку):
OXOXOOXOXO XXOXOXXOOO XOXOXOOXOX XOOOOXOOXX XXOXOXXXOX OXXXXOXOOX OOXOXOXOXO OOXXOXOXXO XOOOOXOOOX XXOXXXXXOO Draw.
- ввод одного числа в качестве координаты должен считаться некорректным
Стиль
Board.cpp
7: константу лучше сделать static constexpr полем класса;
44: тернарный оператор в таких случаях лучше использовать так:
_board[y][x] = gamer == Player::O ? 'O' : 'X';
53: лучше бы цикл; параметры лучше сменить на y, x, dy, dx для читабельности;
62: баг: что если победа была на последнем ходу?
66, 74, etc: циклы дублируются, что не очень критично в данном случае, но лучше было бы от этого избавиться.
StdioBoardView?.cpp
91: объявление correct_input?
Баллы
Корректность: 18.5;
Стиль: 8.5
Note: See
TracTickets for help on using
tickets.
Корректность
В тестах не хватает каких-то случаев;
Стиль
Board.cpp
4: константы обычно с заглавных пишут (или как-то отлично от имен переменных);
6: s/10/size
13: с std::memset было бы короче;
31: почему нельзя сразу
_player
вернуть?42: избыточный if;
59: Board::getState - много дублирования, реализация усложненна для задания. Можно сделать проще, если учитывать, что знаем куда был сделан последний ход (статус можно вообще в move вычислять и сохранять в поле класса);
60: непонятная константа 100, у _counter лучше изменить имя на _occupied_cells_nm, например.
StdioBoardView?.cpp
7:
size
можно спросить у board;8: неясно почему константа глобальная;
9: неясно почему переменные глобальные;
10: почему метод не часть StdBoardView?? Имя функции неточное: функция занимается чтение хода/входных данных, а не исправлением (код функции я не смотрел, так как код будет меняться);
69: списки инициализации;
77: вложенность высокая. тело цикла можно переписать так:
Старайтесь минимизировать вложенность, это делает код более простым для понимания;
90: странно, что функция, сообщающая об ошибке prompt печатает -> цикл нужно как-то поменять;
90: печатать код значения enum class'a плохо с идеологической точки зрения: view сильнее связан с представлением модели, чем мог бы быть. Лучше конвертировать enum class в отображаемое значение явно в отдельной функции view (повторюсь, с идеологической т.з.);
118: с тернарным оператором было бы лаконичнее:
printf("%c wins!\n", status == ... ? 'O' : 'X')
.Test.cpp
20:
return failedNum == 0;
if избыточенКорректность: 10;
Стиль: 6