Change History (4)

comment:1 Changed 4 years ago by Артур Гулецкий (huletski)

Type: ожидается проверкаожидаются исправления

Корректность

Основные недостатки:

  • для вывода используются потоки, а не 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), т.к. он общий для наследников


Баллы

Корректность: 5
Стиль: 3 (т.к. код будет меняться)

comment:2 Changed 4 years ago by Артур Гулецкий (huletski)

Корректность

Основные недостатки:

  • для вывода используются потоки, а не 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.02.0

Не до конца разобралась с корректным вводом: зацикливается, когда вводятся буквы или просто "-".

comment:4 Changed 4 years ago by Артур Гулецкий (huletski)

Resolution: задача сдана
Status: assignedclosed

Корректность

  • не определяется ничья (буквально: не нашел где 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

Note: See TracTickets for help on using tickets.