Можно ли использовать пакет dplyr для условного мутации?

При прочих равных условиях я передаю const & amp; для достаточно сложных классов и значения для POD и простых объектов.

Выравнивание плюсов и минусов для передачи по константной ссылке вместо традиционного прохода по значению

Позитивы:

  • Избегает копирования (большой плюс для объектов с дорогой копией)
  • Доступ только для чтения

Отрицательные:

  • Кто-то может const отличить const от ссылки, если они действительно хотели

. Что еще более важно с позитивами, вы явно контролируете, когда происходит копирование (в вашем случае при передаче инициализации _b в ваш список инициализаторов). Думая о негативах ... Я согласен, что это риск. Я думаю, что почти все хорошие программисты будут чувствовать себя грязными по поводу использования const_cast. Кроме того, вы можете послушно искать const_cast и бросать помидоры в лицо, литье const из аргумента. Но эй, вы никогда не знаете и у кого есть время, чтобы смотреть код как ястреб:)?

Мое субъективное мнение состоит в том, что в достаточно сложных классах и в средах, где производительность имеет значение, избегать конструктора копирования перевешивает риск. Однако для действительно немых и POD-классов я стараюсь делать копии данных и передавать их по значению.

149
задан smci 2 December 2018 в 03:18
поделиться