Opened 4 years ago
Closed 4 years ago
#699 closed ожидается проверка (задача сдана)
HW #2
Reported by: | Obryadina Alexandra | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (7)
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Obryadina Alexandra |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from Obryadina Alexandra to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
comment:3 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Obryadina Alexandra |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:4 Changed 4 years ago by
Owner: | changed from Obryadina Alexandra to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:5 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Obryadina Alexandra |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Четыре одинаковые функции checkXXX() можно заменить на одну, с параметрами, задающими смещениею
GameType
не относится к абстрактному интерфейсу BoardView?, а только к StdioBoardView?.
Вспомогательные методы, специфичные для NcursesBoardView? стоит сделать приватными.
Цикл запроса хода, пока пользователь вводит некорректные данные, можно перенести внутрь View.
20 + 7 + 9
comment:6 Changed 4 years ago by
Owner: | changed from Obryadina Alexandra to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:7 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
В checkLline пару магических констант пропустили
(res = checkLine(x, y, 0, 1)) != FieldState::EMPTY
Лучше не комбинировать результат использования оператора присваивания с другими выражениями. Это потенциальное место для ошибок в процессе копипасты, форматирования и авторефакторинга. И дополнительная возможность спецам из PVS-studio написать очередную статью "О, смотрите какие ошибки мы находим -- покупайте наш статический анализатор!" %)
while (true) { ReadResult result = view.readMove(x, y, player); if (result == ReadResult::FINISHED) { flag = 1; break; } ... }
Вместо флага для выхода из внешнего цикла можно сразу сделать return из функции.
20 + 9.5 + 10
К тестам ncurses прилинковывать не нужно
Если подать невалидный формат хода, приложение может зациклиться.
Пример:
0a0
вариант с ncurses, вероятно, еще не работает: работает ограничение по перемещению курсора и выход по x. Пробелом ни крестики, ни нолики не ставятся. Разметки поля тоже нет.
У вас функция bool возвращает. Наверное, стоит использовать соответствующие типу константы.
поле field модели Board -- публичное и его могут поменять в обход методов move().
Его можно завернуть в дополнительную структуру
Field
, которую можно получить только по константной ссылке из модели каким-нибдуь методомconst Field& getField() const
GameType
стоит сделать параметром конструктораStdioBoardView
и сделать константным полем.Воспользуйтесь логическим ИЛИ, чтобы избавиться от копипасты. И переменная-флаг будет не нужна.
Лучше сделать так, чтоб readMove в возвращающем значении сообщал о продолжении/завершении игры, а не через приватное поле. Этот же метод может также через возвращаемое значение сообщить о некорректном формате.
15 + 5 + 2