Opened 4 years ago
Closed 4 years ago
#747 closed ожидается проверка (задача сдана)
HW #2
Reported by: | Шелухина Екатерина | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Корректность
Основные недостатки:
- для вывода используются потоки, а не stdio;
- неверный формат вывода (где-те не хватает пробелов, "_ win!" -> "_ wins!", ничьей нет ничего примечательного, поэтому "Draw.";
- "End of game" при досрочном выходе user-friendly, но лишнее;
- ошибки в логике определения статуса игры (диагональные победы, NB: победить можно, получив 5 подряд на любой диагонали), неверное определение конца игры:
O.OXXO...X .XOXOXXO.. X..OXOO..X XOOO.XO..X X.OXOXX.O. OX.XX.XO.X .OXOXOX..O OOXX.XOX.O X..OO.OOO. X.O.XOXXOO O wins!
- ошибки при чтении ввода (e.g. 01 01 считается некорректным).
Стиль
(по диагонали, тк код будет исправляться)
Board.h
- не расставлен
const
у методов;
32: значение нужно вынести в константу;
Board.cpp
13: Model не должна знать как себя выводить (исключая отладку), это ответственность View, метод нужно перенести;
22: огромный метод с дублирующимся кодом, непонятные числа 9, 5 (нужны константы); требуется упрощение;
59: победа определится, если удалось выиграть последним ходом, собрав диагональ?
157: memset
StdioBoardView?.cpp
7: неинформативное имя параметра, лучше, например, should_display_board;
7: дублирование вызова displayBoard -> нужно подумать как реорганизовать цикл;
8: старайтесь давать отглагольные имена методам (initialize
);
18: считывание, валидацию и парсинг ввода лучше вынести в отдельную функцию;
19: условие нечитабельно, лучше вынести его вычисление в отдельную переменную(ые) перед циклом;
main.cpp
7: надо проверять, что аргумент таки silent
BoardTest?.cpp
90: этот код лучше в Test.cpp поместить (в showFinalResult), т.к. он общий для наследников
Баллы
Корректность: 6
Стиль: 3 (т.к. код будет меняться)
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Не до конца разобралась с корректным вводом: зацикливается, когда вводятся буквы или просто "-".
comment:4 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
- не определяется ничья (буквально: не нашел где Board::getState возвращает BoardState::draw);
- silent режим не включается (баг в main.cpp,
argc > 2
часть); - в silent режиме при завершении партии должна выводиться доска;
- не доделана обработка ввода.
Стиль
Board.h
- константы лучше поместить в static constexpr поля;
- у canMove const не хватает;
Board.cpp
27: не понял смысл метода nullify. Не нагляднее было бы писать horiz_X = horiz_O = 0;
?;
109: этот метод выглядит лишним. end_of_game можно было бы устанавливать в контроллере непосредственно;
StdioBoardView?.cpp
- (субъективно) цикл в runGame выглядит запутанным.
32, 33: тела веток elseif в данном случае лучше перенести на отдельные строки для упрощения восприятия кода;
+ часть замечаний из предыдущего комментария.
Баллы
Корректность: 15.5
Стиль: 6.5
Корректность
Основные недостатки:
Стиль
(по диагонали, тк код будет исправляться)
Board.h
const
у методов;32: значение нужно вынести в константу;
Board.cpp
13: Model не должна знать как себя выводить (исключая отладку), это ответственность View, метод нужно перенести;
22: огромный метод с дублирующимся кодом, непонятные числа 9, 5 (нужны константы); требуется упрощение;
59: победа определится, если удалось выиграть последним ходом, собрав диагональ?
157: memset
StdioBoardView?.cpp
7: неинформативное имя параметра, лучше, например, should_display_board;
7: дублирование вызова displayBoard -> нужно подумать как реорганизовать цикл;
8: старайтесь давать отглагольные имена методам (
initialize
);18: считывание, валидацию и парсинг ввода лучше вынести в отдельную функцию;
19: условие нечитабельно, лучше вынести его вычисление в отдельную переменную(ые) перед циклом;
main.cpp
7: надо проверять, что аргумент таки silent
BoardTest?.cpp
90: этот код лучше в Test.cpp поместить (в showFinalResult), т.к. он общий для наследников
Баллы
Корректность: 5
Стиль: 3 (т.к. код будет меняться)