kb
→ 0xd34df00d
26.08.2011 12:00 Gajim
ЧТО НЕ ТАК В ЭТОМ КОДЕ? http://company.yandex.ru/job/vacancies/p... (вопрос №6)
ЧТО НЕ ТАК В ЭТОМ КОДЕ? http://company.yandex.ru/job/vacancies/p... (вопрос №6)
В конструкторе Feature я бы заменил points(0) на points(NULL) — так понятнее. stdio на iostream, но это не обязательно. drawCircle и drawPoligon смотрятся чужеродными: они вполне могли бы юзать поле класса points, но тем не менее требуют на вход отдельные точки. По мне так сюда напрашиваются разные абстракции, классы Figure, Circle, Square, Poligon, конструкторы, dynamic_cast и прочее говно.
1. Проверять в деструкторе не обязательно, ноль удалять вполне ок.
2. isValid() лучше сделать сonst'ом. Как и, возможно, draw* всякие.
3. Ну, предположим, что draw* они просто так не определили, ибо лень в примере расписывать.
4. В read, там, где выделяется память под точки, утечет эта самая память, если последовательно вызывать read у одного объекта. Надо удалять/обнулять points в начале функции, например.
5. Я бы, если прочитано не n точек, тоже делал объект сразу инвалидом, а то ХУИТА и МУСОР.
6. И если points не выделилось, то тоже инвалидом.
7. Амперсанд у points лишний, там, в fread. Хуита, памяти пизда.
8. Магические числа в коде (3, 6, 8, последние два в особенности). Говно.
9. Файл не закрывается в main'е.
С первого прочтения вроде все. И пока писал, кажется, чо-та забыл :(
да, я дохуя не заметил косяков
Ну и да, естественно, не стоит забывать про слегка нелепо смотрящееся stdio.h рядом с классами и прочей хуйней. И отсутствие RAII. Вместо double *points можно юзать boost::shared_array<double>, например.
Ну и polygon все же по-другому пишется, но это уже придирки.
Poly gone или как?
Как я написал. Polygon.
polygon же. У них poligon
аа, да, я думал ты говоришь у них polygon. ок
то есть закат солнца вручную никого не смущает? :)
чтоу?
Слишком глобально. Ну давай понакрутим сюда boost.serialization, чо.
facepalm
К таким заданиям можно подходить с двух сторон (кстати, обе они упомянуты в задании): либо минимальное количество правок текущему коду, чтобы он был корректен, вменяем и работал, либо как бы ты сам написал код, который бы выполнял это (== полный рефакторинг). В /0 было про первый вопрос ;)