Opened 6 years ago
Closed 6 years ago
#287 closed ожидается проверка (задача сдана)
ha5
Reported by: | basharin.egor | Owned by: | rutsky,grabovoy.philipp |
---|---|---|---|
Priority: | проверка | Milestone: | ha5-deadline |
Component: | HA#5 lazy_string | Version: | 1.0 |
Keywords: | Cc: | eaniconer@… |
Description
Check ha5, please.
Change History (16)
comment:1 Changed 6 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 6 years ago by
Tested revision 633 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
FAILURE | ||||
SUCCESS | ||||
FAILURE | exit code 139 | |||
SUCCESS | ||||
FAILURE | exit code 139 | |||
SUCCESS | ||||
FAILURE | exit code 139 | |||
FAILURE | ||||
SUCCESS | ||||
FAILURE | exit code 139 | |||
Common header used in some tests: common.h
comment:3 Changed 6 years ago by
Tested revision 634 by basharin.egor.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
WARNING | ||||
FAILURE | exit code 139 | |||
Common header used in some tests: common.h
comment:4 Changed 6 years ago by
Tested revision 635 by basharin.egor.
Main tests
test | stage | result | info | log |
---|---|---|---|---|
SUCCESS | ||||
FAILURE | exit code 139 | |||
SUCCESS | ||||
FAILURE | exit code 139 | |||
Common header used in some tests: common.h
comment:6 Changed 6 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:7 Changed 6 years ago by
Milestone: | ha5-milestone2 → ha5-deadline |
---|---|
Type: | ожидается проверка → ожидаются исправления |
Замечания:
- Вы храните общий
buffer
в экземлярахlazy_basic_string
вstd::shared_ptr
, а внутриbuffer
вstd::shared_ptr
хранитеdata_
. В последнем случаеstd::shared_ptr
не нужен, т.к., насколько я вижу, вы используетеdata_
эксклюзивно вbuffer
.
- Интерфейс
buffer
сильно связан сlazy_basic_string
--- этот класс легко привести в некорректное состояние (например, когда он просто конструируетсяsize_
ничем не инициализирован). Добавьте вbuffer
конструкторы. Если вы предполагаете, что один экземплярbuffer
должен хранить строку фиксированный длины (довольно разумное ограничение), то зафиксируйте это явно в интерфейсе класса.
comment:9 Changed 6 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
- Исправлено. (Вообще умный указатель задумывался для того, чтобы использовать RAII)
- Исправлено. (Не совсем понял последнее предложение, что значит зафиксировать?)
comment:10 Changed 6 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
- Да, RAII это правильная вещь, но вместо
std::shared_ptr
стоит использоватьstd::unique_ptr
внутриbuffer
.
- Насколько я вижу, во всех использованиях
buffer
размер буфера заранее известен (или вычислим черезTraits::length(str)
), и не изменяется.
Я предлагаю зафиксировать то, что размер буфера никогда не меняется в интерфейсе так, чтобы в процессе жизни экземпляра
buffer
его размер нельзя было поменять. Это можно сделать, ограничив конструкторы и операторы копирования:
struct buffer { buffer(size_type size) {...} buffer(size_type size, CharT ch) {...} buffer(CharT const *str) {...} buffer(buffer const &) = delete; buffer & operator=(buffer const &) = delete; ~buffer() {...} CharT& get_ch (size_type pos) {...} const CharT& get_ch(size_type pos) const {...} }
Класс с таким интерфейсом нельзя использовать неправильно и у него больше полезных инвариантов (
buffer
никогда не пуст и фиксированной длины).
Исправьте, пожалуйста.
comment:11 Changed 6 years ago by
Tested revision 821 by basharin.egor.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
Common header used in some tests: common.h
comment:12 Changed 6 years ago by
Tested revision 822 by basharin.egor.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
Common header used in some tests: common.h
comment:13 Changed 6 years ago by
Tested revision 823 by basharin.egor.
Smoke tests
test | stage | result | info | log |
---|---|---|---|---|
SUCCESS | ||||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
SUCCESS | ||||
FAILURE | exit code 1 | |||
Common header used in some tests: common.h
Tested revision 614 by basharin.egor.
Smoke tests
test
stage
result
info
log
run_smoke_test.cpp
run_smoke_test-gcc62.log
run_smoke_test-valgrind.log
run_smoke_test-gcc62-asan.log
run_smoke_test-clang-san.log
Common header used in some tests: common.h