#754 closed ожидается проверка (задача сдана)
HW#2
Reported by: | Никита Усольцев | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Version: | → 1.0 |
---|
comment:3 Changed 4 years ago by
Version: | 1.0 → 3.0 |
---|
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
Ценю ваши усилия по созданию Makefile, но собрать командой make решение все еще нельзя:
{hw_02}[2125]$ pwd && svn up && svn status /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02 Updating '.': At revision 3081. {hw_02}[2126]$ make make: /usr/local/Cellar/cmake/3.15.5/bin/cmake: Command not found Makefile:343: recipe for target 'cmake_check_build_system' failed make: *** [cmake_check_build_system] Error 127
Если собирать "руками", то решение не компилируется:
{build}[2131]$ cmake .. -- The C compiler identification is GNU 9.2.1 -- The CXX compiler identification is GNU 9.2.1 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/g++ -- Check for working CXX compiler: /usr/bin/g++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Configuring done -- Generating done -- Build files have been written to: /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/build [1]+ Done emacs ../CMakeLists.txt {build}[2132]$ make Scanning dependencies of target test_hw_02 [ 11%] Building CXX object CMakeFiles/test_hw_02.dir/test/test1.cpp.o [ 22%] Building CXX object CMakeFiles/test_hw_02.dir/test/Test.cpp.o [ 33%] Building CXX object CMakeFiles/test_hw_02.dir/test/BoardTest.cpp.o [ 44%] Building CXX object CMakeFiles/test_hw_02.dir/src/Board.cpp.o [ 55%] Linking CXX executable test_hw_02 [ 55%] Built target test_hw_02 Scanning dependencies of target hw_02 [ 66%] Building CXX object CMakeFiles/hw_02.dir/src/main.cpp.o /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp: In function ‘int main(int, char**)’: /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp:7:16: error: ‘strcmp’ was not declared in this scope 7 | } else if (strcmp(argv[1], "silent") == 0) { | ^~~~~~ /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp:2:1: note: ‘strcmp’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’? 1 | #include "StdioBoardView.hpp" +++ |+#include <cstring> 2 | CMakeFiles/hw_02.dir/build.make:62: recipe for target 'CMakeFiles/hw_02.dir/src/main.cpp.o' failed make[2]: *** [CMakeFiles/hw_02.dir/src/main.cpp.o] Error 1 CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/hw_02.dir/all' failed make[1]: *** [CMakeFiles/hw_02.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2
Если починить и это:
- используются потоки, а не stdio;
- приложение не завершается на ничьей с печатью "Draw.", a печатает "DRAW" и ожидает нового хода.
Стиль
Board.hpp
- публичные поля (_state);
- публичные методы, которые должны быть приватными (e.g. counting);
- getGameState (для большего контраста с getFieldState);
+ неисправленные замечания из прошлого комментария.
Баллы
Корректность: 15.5 (учитывая замечания и ошибки компиляции);
Стиль: 6.5.
Note: See
TracTickets for help on using
tickets.
Корректность
Стиль
Board.hpp
*: const у методов не проставлен
3: стиль имен enumов, enum classов обычно совпадает со стилем имен классов;
7: отступы;
23: а без UB никак? assert, например. Падать обычно лучше, чем данные портить;
32: s/10/sz_field;
34: так точно, private должен быть;
Board.cpp
14: избыточный if, возвращайте непосредственно результат вычисления условия;
47: переменные с заглавной буквы зачем-то;
48: дублирование циклов, нужно убрать;
49: можно уменьшить вложенность:
StdioBoardView?.hpp
*: const у методов;
*: поля должны быть приватными, решение хранить копию Board неоднозначно;
StdioBoardView?.cpp
12: switch позволил бы сделать код очевиднее;
29: a вот и баг с выводом Draw;
39: дублируется вызов функции, выводящей доску; попробуйте переделать тело цикла, чтобы от этого избавиться; уровень вложенности в теле цикла нужно попробовать уменьшить.
Test.hpp
3: cstdio
BoardTest?.hpp
*: имена тестов неинфорамaтивны,:чем testMove1 от testMove2 отличается, если судить по названию? Лучше, чтобы имя как-то отражало тестируемый случай.
Test.cpp
19: избыточный if.
BoardTest?.cpp
70: более удобно было бы задавать конфигурацию доски через массив символов (нужно дописать метод в Board).
Misc
*: test/test1.cpp -> test/test.cpp
Баллы
Корректность: 14
Стиль: 5.5