Mongush wrote:muzhik wrote:
Да, верно. Но похоже, что подобные случаи экономии памяти - это ЕДИНСТВЕННЫЕ случаи, когда виртуальный деструктор себя не оправдывает. Может быть, Вы можете привести другой недостаток virtual destructors, кроме расходования памяти на поинтер на vtable?
Ага какже, посмотрите библиотеки на boost.org и посчитайте сколько там виртуальных деструкторов.
С++ - это не только ООП!!!
17 штук насчитал, включая примеры.
![Smile :)](./images/smilies/icon_smile.gif)
Да, убедили. Принимаю поправку.
Anyway, думать надо всегда.
![Smile :)](./images/smilies/icon_smile.gif)
Опять же, чукчей-читателей у того же boost'а куда больше, чем писателей. Т.е., общие рекомендации - они для пользователей базовых библиотек; для аппликационщиков, если угодно.
А кто пишет базовую библиотеку - в любом случае, думает своей головой.
Возвращаясь к интервью - вроде все согласны, что лучший ответ - по максимуму развёрнутый. Ну, с учётом настроения интервьюера. (Допустим, кому-то не нравится, что интервьюер явно хочет услышать свой любимый ответ; ну дык на интервью стоит задача его пройти - а потом уже можно решать не идти работать к не понравившемуся остолопу...)
roadman wrote:Программисткий коллектив, как и любой другой надо делиться на разные группы, чтобы сделать его эффективным. Группа иногда может сотоять из одного человека.
Классные программисты - это "системная группа" - которая пишет базовые библиотеки или как здесь принято называть framework. При этом базовые библиотеки - это не только низкоуровневый код, типа memory management, но и базовые классы для бизнес-процессов тоже. Активно используется инкапсуляция. Всё что не надо видеть и напрямую использовать прячется внутри классов.
Да-да, конечно. Вот только далеко не всем менеджерам нравится быть зависимыми от "группы сильных программистов", которые могут и разбежаться. "Классные программисты" не любят годами сидеть на саппорте своего framework'а, и ищут себе другое занятие - и тогда саппорт и добавка фичеров переходит к людям попроще. Кроме того, в базовом коде - также есть места, где можно обойтись v.dtor'ы, и есть места, где не стоит.
Вообще, это классный метод в споре. "У вас работа неправильно поставлена, и опыта недостаточно!"
![Smile :)](./images/smilies/icon_smile.gif)
Я повторяю, мир не идеален. И в неидеальном мире, vdtor'ы нужны. Упомянутый индус, который писал аппликацию на нашей платформе - использующий направо и налево multiple inheritance - ставил автоматом vdtor, и правильно делал.
![Smile :)](./images/smilies/icon_smile.gif)
Я понимаю, что далеко не всякая компания (менеджемент) так строит свою работу, объясняя бардак, тем, что продукт нужен на рынке "сейчас, а не через час". Это всё болезни роста.
По-моему, так работает изрядная часть фирм на рынке.
Мой опыт работы в научных коллективах, на производстве и на ниве программирования говорит, что дело можно организовать правильно (ну почти) с самого начала, с пользой для всех.
I like this "ну почти". А если менеджер получает полуразваленую группу, и надо спасать продукт? А если .... да мало ли что.
Проблема здесь скорее в квалификации менеджемента. Но если менеджер не совсем придурок, он всегда прислушается к дельному совету, в том числе и по организация самого процесса программирования.
Я только могу повторить: никто не гарантирует 100% профессионализма программистов, и никто не гарантирует 100% профессионализма менеджмента.
И не надо под видом "авральных работ" списывать свою некомпетентность (nothing personal).
Я не менеджер.
![Smile :)](./images/smilies/icon_smile.gif)
Но я работал с разными менеджерами, в разных проектах, и в разных фирмах, и знаю, какова грубая реальность. Вероятно, Вам везло, и Вы работали в идеальных коллективах с идеальным менеджментом и идеальным рынком - ну а мне повезло меньше.
Код написанный методом "аврала" никогда не будет надёжным и легко сопроваждаемым, и в конечном итоге - принесет больше проблем, потери денег и репутации.
Обратите внимание - Вы уже спорите не с моими словами, а со своими.
![Smile :)](./images/smilies/icon_smile.gif)
Я не утверждал, что код ПИШУТ ИЗНАЧАЛЬНО авральным методом. Но поддержка кода и вправду частенько так выглядит - и вот тогда будут и уставшие люди, и некомпетентных больше на поддержке. Менеджерам же (умным, хорошим, етц) приходится лавировать между пониманием, что спешка хороша только при ловле блох, с одной стороны, и требованиями высшего менеджмента и рынка - с другой стороны.
А теперь объясните какому-нибудь VP, что "нам нужно пол-года, чтобы переписать такой-то кусок основательно и солидно"...
P.S.
О "базовой группе". Очень жизненный пример.
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Я сделал всё от меня возможное (всего две недели назад), чтобы НЕ попасть в такую группу - и мне это удалось.
![Smile :)](./images/smilies/icon_smile.gif)
(Меня пытались перевести - раньше эта работа была раскидана на две группы - по разным участкам, и часть "базового кода" была на мне.) У них работа на 80% состоит из саппорта и мелких фичеров и копания в той же структуре данных уже 3й или 4й год. А мы начинаем новый проект.
![Smile :)](./images/smilies/icon_smile.gif)
Группа наша состоит почти вся из Sr. SW Eng'rs. В "базовую" нас - никакими пряниками не загонишь.
![Smile :)](./images/smilies/icon_smile.gif)