Change History (3)

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

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

Замечания:

  • при выводе на экран заработная плата должна выводить после надписи "Base Salary";
  • баг в коде считывания из файла имени разработчика (Developer);
  • bin_manip.h: посимвольно и так i/ostream умеет читать и писать. Замените манипуляторы write_char и read_char на write_c_str и read_c_str (пишут и читают c-string) как в условии;
  • emploees.h:4. s/stdint.h/cstdint;
  • emploees.h:16,18. лучше print_text/print_formatted/write_bin/read_bin. Субъективно, имена input, foutput и т.п. запутывают;
  • bin_manip.cpp:10. А если код запущен на big-endian платформе? Инты писать/читать надо побайтово, чтобы гарантировать порядок;
  • bin_manip.cpp:37. Если считали не 0 и не 1, устанавливайте failbit у потока;
  • main.cpp:11. Почему имя check?
  • main.cpp:28. Почему не else if?
  • main.cpp:33. Почему с прописной буквы имя переменной начинается? Не используйте VLA без необходимости. У std::string есть метод c_str;
  • employees.cpp: уберите избыточные this-> из методов, где это возможно, который делает код более громоздким, а ясности не привносит;
  • employees.cpp:55. Отступы (продолжение statement'a) можно поместить под первым << из предыдущей строки;
  • employees.cpp:58. os << (_has_bonus ? '+' : '-');
  • employees.cpp:71. _has_bonus = bonus != 0;
  • employees.cpp: дублирование кода ввода/вывода cstr; дублирование ввода/вывода полей базового класса;
  • employees.cpp:173. EmployeeArray::add должен принимать константный указатель;
  • employees.cpp:208. Дублирование кода (аналогичный код есть в main.cpp). Почему это плохо обсудили на практике.

Баллы: 5.5, исправляйте.

comment:2 Changed 4 years ago by podoprigora.ivan

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

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

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

Замечания:

  • bin_manip.cpp:11, 20. манипуляторы чтения/записи int32_t в little-endian реализованы частично, т.к. не гарантируется порядок записи байтов (на big-endian платформе значение будет записано неверно) -> -1;
  • bin_manip.cpp:38, 60. отсутствует обработка ошибок (установка failbit) в коде считывания данных (bool - если считалось значение отличное от 0 и 1, c-string - не был найден нуль-терминатор, в этом случае решение вообще зависнет) -> -1;
  • bin_manip.cpp:48. можно было записать строку за один вызов write, используя std::string::c_str, а не посимвольно;
  • main.cpp:2. лишний include;
  • main.cpp:18. коды типов лучше вынести в константы;
  • employees.cpp:8. что мешало реализовать аналогичный метод в Employee? Почему имя макроса не заглавными буквами? Старайтесь не использовать макросы там, где легко можно обойтись без них, ограничивайте область действия макроса (#undef'ом), чтобы избежать сюрпризов, связанных с совпадением имен макросов с другими конструкциями языка;
  • employees.cpp:58. сломаны отступы. Можно починить, например, так:
    os << "Foo" << foo
       << "Bar" << bar;
    
  • employees.cpp:86. избыточная временная переменная, можно было передавать читать непосредственно в _name (ifs >> read_c_str(_name));
  • employees.cpp:190, 203. И все равно дублирование логики, переводящей код объекта в объект -> -0.5.

За мелкие замечания совокупно -0.4.

Баллы: 7.1

Note: See TracTickets for help on using tickets.