Opened 4 years ago

Closed 4 years ago

#1026 closed ожидается проверка (задача сдана)

WW #15

Reported by: Gleb Marin Owned by: Egor Suvorov
Component: WW_linq Version: 1.0
Keywords: Cc:

Description


Change History (1)

comment:1 Changed 4 years ago by Egor Suvorov

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

Корректность 4/7.

  • Не компилируется с предупреждением: operator bool() не помечен как override.
  • Бывают лишние копирования функторов.
  • Падает until на пустом входе как минимум.
  • where_neq/until_eq зря а) принимают элемент по копии; б) копируют его ещё раз внутрь функтора.

Стиль 0.75/3:

  • Не хватает const-qualified у operator bool(). У него же не хватает override.
  • Не хватает слов final, explicit (конструктор и оператор), noexcept, rvalue-ref-qualifier у методов.
  • Не хватает виртуального деструктора в полиморфном классе enumerator. Конкретно в этой задаче это ни на что не влияет, но привычка полезная.
  • У enumerator стоит запретить копирование и перемещение — это точно ошибки. Перемещение можно запрещать, начиная с C++17 из-за copy elision.
  • Вызывайте операторы на *this, а не как методы.
  • to_vector можно выразить через copy_to + std::back_inserter.
  • has_parent_enumerator --> enumerator_with_parent. Лучше не свойство описывать, а объект.
  • has_parent_enumerator<T>::parent_ — вроде здесь часть до :: не нужна
  • В select_enumerator получается два поля: rv_ и _rv, одно не используется. Жутковато.
  • was_pred — не очень название. Лучше чуть обобщённее и не завязано на то, что это until: iteration_stopped или что-то таке.
  • calculate_was_pred() — не надо называть метод по его побочным эффектам. Назовите лучше "что этот метод делает".
    • move_to_first_true() — лучше, но можно ещё лучше: fetch_next_element().
Note: See TracTickets for help on using tickets.