Opened 4 years ago
Closed 4 years ago
#1047 closed ожидается проверка (задача сдана)
WW #18
Reported by: | Surkov Petr | Owned by: | Egor Suvorov |
---|---|---|---|
Component: | WW_format | Version: | 3.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Owner: | changed from Egor Suvorov to Surkov Petr |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from Surkov Petr to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Owner: | changed from Egor Suvorov to Surkov Petr |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Корректность 4/7:
estimate_size
для целочисленных типов неверен.append_to
для чисел выделяет строчку в куче не по делу.
Стиль 0.5/3:
estimate_size()
для вектора непонятен по коду: формула верная, но, например, неочевидно, где учли фигурные скобки.isFormattableImpl
дублирует логику из специализацийFormatHelper
. Лучше сделать как-то так, чтобы при добавлении новой специализации вообще не приходилось менять оставшийся код.isVector
не нужен, лучше честно сделать специализацию.- Комментарии
vector
/bool
полностью дублируют код и добавляют простор для ошибок: поменяли специализацию, забыли поменять комментарий, теперь он путает. - Лучше
+=
вместоappend
. MAX_BOOL_LEN
— деталь реализации конкретногоFormatHelper
, должна быть объявлена внутри.MAX_FORMATTED_LEN = 10
— неверное утверждение, бывают отформатриованные строчки длиннее 10.
comment:4 Changed 4 years ago by
Owner: | changed from Surkov Petr to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 2.0 → 3.0 |
comment:5 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Попытка уже после дедлайна, так что не на баллы. Но было бы так:
Корректность 5/7:
- Для контейнеров кроме
vector
может прийти hard compilation error. Потому чтоvalue_type
есть, а вот[]
нет.
Стиль 2/3:
template<> FormatHelper<bool>
вместоis_same_v<T, bool>
- Для целочисленных:
- Буфер лучше сделать локальным для
append_to
, чтобы место не занимать assert(ec == std::errc());
— проверяется, что ошибок уto_chars
нет. Например, буфера хватило.std::errc
— какой-то новый тип, его значение по умолчанию — "ошибок нет".
- Буфер лучше сделать локальным для
- Для векторов:
- Лучше специализацию
vector<T>
, чем лезть вvalue_type
. Тем более что теперь у вас не только для векторов работает и из-за этого рушится корректность.
- Лучше специализацию
Note: See
TracTickets for help on using
tickets.
Корректность:
Стиль:
FormatHelper
, а не через кучу перегрузок функций.isFormattable
сейчас вообще никак не связан сFormatHelper
, а зря. Но это всё равно полностью перепишется, должно стать сильно лучше.