Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конструкторы и virtual? Почему нельзя? 
:(
    Опции темы
maxi91m
  Дата 16.5.2009, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Хотелось бы услышать почему так:

1)Конструктор класса не может быть виртуальным
2)Деструктор – может (и должен!!)

 smile 

--------------------
PM MAIL ICQ   Вверх
Rififi
Дата 16.5.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 3
Всего: 36



1. потому что в языке с++ должен быть известен тип конструируемого объекта
2. потому что стандарт разрешает виртуальные деструкторы. то, что далее в скобках - неправда.
PM MAIL   Вверх
maxi91m
Дата 16.5.2009, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



А если поглубже закопаться, что там будет?
--------------------
PM MAIL ICQ   Вверх
mes
Дата 16.5.2009, 15:15 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(maxi91m @  16.5.2009,  14:14 Найти цитируемый пост)
А если поглубже закопаться, что там будет? 

грунтовые воды. 


--------------------
PM MAIL WWW   Вверх
maxi91m
Дата 16.5.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Этот вопрос будет в числе вопросов на высокую оценку, вот и хочется узнать по подробнее что бы дать более конкретный ответ, и обаснованный.
--------------------
PM MAIL ICQ   Вверх
NightmareZ
Дата 16.5.2009, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


[хакер]
**


Профиль
Группа: Участник
Сообщений: 699
Регистрация: 10.8.2006

Репутация: 0
Всего: 13



Цитата(maxi91m @  16.5.2009,  14:55 Найти цитируемый пост)
1)Конструктор класса не может быть виртуальным

А зачем ему быть виртуальным?

Цитата(maxi91m @  16.5.2009,  14:55 Найти цитируемый пост)
2)Деструктор – может (и должен!!)

Такой вот код выведет "A":
Код

#include <iostream>

struct A
{
    ~A() { std::cout << "A"; }
};

struct B: public A
{
    ~B() { std::cout << "B"; }
};

int main()
{
    A* a = new B();
    delete a;
}


а такой выведет "BA":

Код

#include <iostream>

struct A
{
    virtual ~A() { std::cout << "A"; }
};

struct B: public A
{
    ~B() { std::cout << "B"; }
};

int main()
{
    A* a = new B();
    delete a;
}


Пояснения нужны?


--------------------
NightmareZ.net - мой блог и сайт, мои проекты и прочий трэш
Ely-Art.ru - наша маленькая домашняя арт-студия
mugcraft.ru - кружки на любой вкус
PM WWW ICQ Skype GTalk AOL YIM   Вверх
Rififi
Дата 16.5.2009, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1254
Регистрация: 9.3.2008

Репутация: 3
Всего: 36



maxi91m
А если поглубже закопаться, что там будет? 
не знаю, я не закапывался.
PM MAIL   Вверх
Daevaorn
Дата 16.5.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: нет
Всего: 70



Цитата(maxi91m @  16.5.2009,  16:18 Найти цитируемый пост)
Этот вопрос будет в числе вопросов на высокую оценку, вот и хочется узнать по подробнее что бы дать более конкретный ответ, и обаснованный. 

Значит вы его не дадитеsmile
PM MAIL WWW   Вверх
zim22
Дата 16.5.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(maxi91m @  16.5.2009,  14:55 Найти цитируемый пост)
1)Конструктор класса не может быть виртуальным

Можно сделать так, что конструктор станет вируальным. Хотя виртуальные конструкторы и не поддерживается напрямую в С++, но используя хитрости и уловки этого не так уж сложно добиться. Если вам интересно - я приведу пример из книжки.


--------------------
PM MAIL   Вверх
maxi91m
Дата 16.5.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 191
Регистрация: 14.1.2007
Где: Нижний Новгород

Репутация: нет
Всего: нет



Цитата(zim22 @ 16.5.2009,  16:00)
Цитата(maxi91m @  16.5.2009,  14:55 Найти цитируемый пост)
1)Конструктор класса не может быть виртуальным

Можно сделать так, что конструктор станет вируальным. Хотя виртуальные конструкторы и не поддерживается напрямую в С++, но используя хитрости и уловки этого не так уж сложно добиться. Если вам интересно - я приведу пример из книжки.

Если можно, скажите название книги и автора.
--------------------
PM MAIL ICQ   Вверх
zim22
Дата 16.5.2009, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(maxi91m @  16.5.2009,  16:47 Найти цитируемый пост)
Если можно, скажите название книги и автора.

Программирование на С++. Дж.Коплиен.


--------------------
PM MAIL   Вверх
ISergeyN
Дата 16.5.2009, 17:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 11.10.2008
Где: Україна

Репутация: 2
Всего: 2



Цитата(zim22 @  16.5.2009,  16:00 Найти цитируемый пост)
 Если вам интересно - я приведу пример из книжки.

Показуй
PM MAIL Skype   Вверх
zim22
Дата 16.5.2009, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(ISergeyN @  16.5.2009,  17:39 Найти цитируемый пост)
Показуй

слушаю и повинуюсь



Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  094.rar 6,95 Kb


--------------------
PM MAIL   Вверх
mes
Дата 16.5.2009, 19:42 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



Цитата(zim22 @  16.5.2009,  17:27 Найти цитируемый пост)
Цитата

Показуй

слушаю и повинуюсь

это  код из учебной книжки или собственные эксперементы ?!   smile 

Цитата

  Oper(Oper &o) { c = char(o); }

плохая привычка полагаться на порядок членов.

Цитата

  Atom *copy() const {
    Oper *retval = new Oper;
    retval->c = c;
    return retval;
  }

а не лучше внутренниe махинации отдать копи-конструктору, и в copy оставить лишь return new Oper(this); ?
...

P.S. имхо также для для подобной идеологии лучше подходит имя clone, чем copy.




--------------------
PM MAIL WWW   Вверх
zim22
Дата 16.5.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(mes @  16.5.2009,  19:42 Найти цитируемый пост)
это  код из учебной книжки или собственные эксперементы ?!

Из книжки.  "Программирование на С++". Дж.Коплиен. Она всем классная, но немножко старая. 1992 года. На русский её перевели только в 2005 году, супер, да? smile
 Поэтому и стиль программирования отличается от теперешнего.

Цитата(mes @  16.5.2009,  19:42 Найти цитируемый пост)
а не лучше внутренниe махинации отдать копи-конструктору, и в copy оставить лишь return new Oper(this); ?

лучше. но я решил не лезть своим пятачком в учебный код.




Это сообщение отредактировал(а) zim22 - 16.5.2009, 20:33


--------------------
PM MAIL   Вверх
fry
Дата 17.5.2009, 01:10 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Если поможет.

Конструктор делать виртуальным нет смысла т.к. при создании объекта прямо указывается его тип и никаких вариантов быть не может.
Деструктор делается виртуальным т.к. при использовании указателя на суперкласс(родитель) для использования некоторого созданного объекта, его удаление через этот указатель приведет к неправильному удалению исходного объекта т.к. будет удалена лишь часть, касающаяся суперкласса. Таким образом использование виртуального деструктора необходимо для использования как написано выше, а в случае использования непосредственно созданного объекта или указателя на него тогоже типа что и объект его использование не обязательно.

PM MAIL   Вверх
zim22
Дата 17.5.2009, 07:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(fry @  17.5.2009,  01:10 Найти цитируемый пост)
Конструктор делать виртуальным нет смысла т.к. при создании объекта прямо указывается его тип и никаких вариантов быть не может.

Конструктор делать виртуальным есть смысл, когда мы на этапе компиляции не знаем, какой объект нам необходимо создать.


--------------------
PM MAIL   Вверх
fry
Дата 17.5.2009, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Я думаю, что есть такой предел в написании кода, после которого лишь некоторые способны до конца понять как это работает. ИМХО переступая за него человек (программист) как бы обрекает себя на "одиночество", что не хорошо для кода самой программы т.к. если его будет поддерживать человек, который не очень разбирается в его работе, возможны варианты трудно отлавливаемых ошибок, что делает данный процесс (поддержания , развития) дорогим (время, деньги). Может я не прав конечно, но мне как-то удавалось без виртуальных конструкторов создавать нормальный код и что более важно я даже не задумывался о необходимости мыслей типа "создания объекта, тип которого не известен". ИМХО код должен быть понятен программисту (ИМХО не только создавшему его), прост ("но не проще" не помню откуда цитата), отвечать требованиям.

Повторюсь, что это все лично мое "ИМХО" - кто-то согласится, кто-то нет. Я, читая книги со всякими примерами из рода "вывернем С++ на изнанку", считаю, что они достаточно полезны, но применять все это надо с осторожностью и полной уверенностью, что это необходимо ( в моих 99% случаях это все лишнее ).

В вопросу о выборе типа объекта н аэтапе выполнения. Как-то фабрики объектов и интерфейсные классы достаточно функциональны в этом плане.

Это сообщение отредактировал(а) fry - 17.5.2009, 17:13
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  17:12 Найти цитируемый пост)
Я думаю, что есть такой предел в написании кода, после которого лишь некоторые способны до конца понять как это работает. 

Некоторые - это кто? одаренные гении?

Цитата(fry @  17.5.2009,  17:12 Найти цитируемый пост)

ИМХО переступая за него человек (программист) как бы обрекает себя на "одиночество", что не хорошо для кода самой программы т.к. если его будет поддерживать человек, который не очень разбирается в его работе, возможны варианты трудно отлавливаемых ошибок, что делает данный процесс (поддержания , развития) дорогим (время, деньги).

Это проблема лично того программиста который не понимает. Он может и С++ не знать, никто не обязан писать для него комментарии типа
Код

i++; //инкрементируем переменную i (увеличиваем значение на единицу)
return 0; //возвращаем 0

Design Pattern должен быть понятным и читабельным для любого программиста среднего уровня, а виртуальный конструктор - самый настоящий шаблон проектирования.
PM   Вверх
Lazin
Дата 17.5.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(zim22 @  17.5.2009,  07:42 Найти цитируемый пост)
Конструктор делать виртуальным есть смысл, когда мы на этапе компиляции не знаем, какой объект нам необходимо создать.

на этапе компиляции мы это всегда знаем, когда не знаем - используем фабрику объектов
PM MAIL Skype GTalk   Вверх
fry
Дата 17.5.2009, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Цитата

Некоторые - это кто? одаренные гении?
. . .
Это проблема лично того программиста который не понимает. Он может и С++ не знать, никто не обязан писать для него комментарии типа


Я СЕЙЧАС говорю не о "Hello World!", принцип его работы не надо комментировать для нормального программита. 

По вашему (azesmcar) каждый программист (если он даже гений) должен писать код с применением всех самых сложных конструкций и способов программирования которые он вычитал? Если все будут читать книги Александреску и других (что само по себе не плохо) и писать весь свой код по ним, то сколько по вашему мнению будет людей, которые смогут обслуживать код и выдавать реальный результат на выходе, какие деньги придется платить тем, кто это может, сколько надо потратить времени и денег для приведения их к данному уровню культуры/методов программирования? 
Я писал именно об этом. 
Если этого мало, то как по вашему: 
Сложность кода коррелирует с количеством ошибок? 
Сколько может стоить ошибка в простом и в сложном коде?
Всегда ли сложный код, пусть даже он и работает быстрее и по вашему "ИМХО" лучше, так необходим для реализации проекта?

Lazin, с тобой согласен на 100%

Это сообщение отредактировал(а) fry - 17.5.2009, 17:57
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  17:55 Найти цитируемый пост)
По вашему (azesmcar) каждый программист (если он даже гений) должен писать код с применением всех самых сложных конструкций и способов программирования которые он вычитал? Если все будут читать книги Александреску и других (что само по себе не плохо) и писать весь свой код по ним, то сколько по вашему мнению будет людей, которые смогут обслуживать код и выдавать реальный результат на выходе, какие деньги придется платить тем, кто это может, сколько надо потратить времени и денег для приведения их к данному уровню культуры/методов программирования? 

Нет, код надо писать с применением тех конструкций, которые самым лучшим образом решат поставленную задачу. Если это виртуальный конструктор - пусть это будет он. А писать то что не решает задачу лучшим образом только потому что программист который в будущем будет сопровождать этот код недостаточно компетентен чтобы понять работу виртуальных функций - вот этого точно не стоит делать. smile 
Возможно чтобы написать что-то наподобие и нужно прочитать некоторые книги, но чтобы понять написанное - простых знаний С++ вполне достаточно. Там нет ничего сверхестественного, обычные конструкции C++.

Это сообщение отредактировал(а) azesmcar - 17.5.2009, 18:02
PM   Вверх
fry
Дата 17.5.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Хочу добавить, что я не против таких конструкций, я за применение их только ести это необходимо.
Также я за то, что гениальный программист должен подумать прежде чем писать свой гениальный код для обычных смертных. Конечно есть основополагающие конструкции типа паттернов. Их НЕОБХОДИМО знать т.к. писать код на уровне 10 класса школы - это тоже крайность.
Все пишется из основных операторов с применением стандартного синтаксиса, на то он и язык.
Интересно также кто как будет решать компетентен ли программист или нет. ИМХО субъективное мнение. Я говорю не про бездарей, а про среднего программиста и программиста "гения" ( безграничного любителя книг если хотите ). Если из моего текста это не очень понятно  - извеняюсь, однако имелось ввиду именно это.

Первый пост писался для "Форум -> Программирование -> C/C++: Для новичков -> Конструкторы и virtual?"
Остальные ИМХО в нее не укладываются.

Это сообщение отредактировал(а) fry - 17.5.2009, 18:15
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  17:55 Найти цитируемый пост)
Если этого мало, то как по вашему: 
Сложность кода коррелирует с количеством ошибок? 
Сколько может стоить ошибка в простом и в сложном коде?

а как по вашему
В каком коде легче сделать ошибку, в простом но придуманном вами или в сложном но 1000 раз продуманном и испробованном годами и специалистами коде?

Цитата(fry @  17.5.2009,  17:55 Найти цитируемый пост)
Всегда ли сложный код, пусть даже он и работает быстрее и по вашему "ИМХО" лучше, так необходим для реализации проекта?

Смотря в каком проекте, смотря в какой код. Вообще я против написания сложного кода, но повторяюсь..в шаблонах проектирования ничего сложного нет smile 
PM   Вверх
fry
Дата 17.5.2009, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Вообще я против написания сложного кода - я этого и ждал smile 

Простой код потенциально не так подвержен ошибкам как сложный. В коде, который был продуман до мелочей также могут возникать ошибки, однако исправлять их легче в простом коде и ума надо меньше, а он нынче дорог (если хороший). думаю продолжать не буду.

1000 раз продуманном и испробованном годами и специалистами коде - это о библиотеках?

Это сообщение отредактировал(а) fry - 17.5.2009, 18:22
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 19:05 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  18:20 Найти цитируемый пост)

Простой код потенциально не так подвержен ошибкам как сложный. В коде, который был продуман до мелочей также могут возникать ошибки, однако исправлять их легче в простом коде и ума надо меньше, а он нынче дорог (если хороший). думаю продолжать не буду.

Для кого-то может быть сложным кодом вот это
Код

template <typename T>
class A
{
    /* ... */
}

лишь потому что он не знает что такое template. Прикажете не использовать шаблоны?

под сложным кодом я понимаю нечто другое, а не использование конструкций и возможностей языка программирования.

Цитата(fry @  17.5.2009,  18:20 Найти цитируемый пост)
1000 раз продуманном и испробованном годами и специалистами коде - это о библиотеках?

нет, я о шаблонах проектирования (design patterns).

У меня есть проект в котором я typelist из книги Александреску использовал, немного подправил под свои нужды и получил мощную вещь избавляющую меня от надобности писать килобайты кода. Так что, мне его убрать только потому что кто-то мог не прочитать эту книгу или просто напросо не иметь понятия о метапрограммировании? Нет уж, спасибо, мне мои нервы дороже.
А теперь попробуйте угадать с какого этажа мне наплевать на то что кто-то не сможет понять написанного мною (кстати грамотного) кода? smile 

Это сообщение отредактировал(а) azesmcar - 17.5.2009, 19:07
PM   Вверх
fry
Дата 17.5.2009, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Тема превращается в спор.
Цитата

Цитата

Простой код потенциально не так подвержен ошибкам как сложный. В коде, который был продуман до мелочей также могут возникать ошибки, однако исправлять их легче в простом коде и ума надо меньше, а он нынче дорог (если хороший). думаю продолжать не буду.

лишь потому что он не знает что такое template. Прикажете не использовать шаблоны?
под сложным кодом я понимаю нечто другое, а не использование конструкций и возможностей языка программирования.


Я сомниваюсь, что вы поняли о чем я. Могу перефразировать:
Лично Вы где потенциально допустите больше ошибок в простом или в сложном коде.

Повторюсь насчет вашего примера:
Цитата

Я говорю не про бездарей, а про среднего программиста и программиста "гения" ( безграничного любителя книг если хотите ).


Цитата

Цитата(fry @  17.5.2009,  18:20 Найти цитируемый пост)
1000 раз продуманном и испробованном годами и специалистами коде - это о библиотеках?

нет, я о шаблонах проектирования (design patterns).


Шаблоны проектирования лишь описание варианта создания некоторого поведения для решения конкретной задачи. Это не код, это принцип, его не проверяют, его используют или не используют.

Цитата

А теперь попробуйте угадать с какого этажа мне наплевать на то что кто-то не сможет понять написанного мною (кстати грамотного) кода?

Если писать код исключительно для себя, то я с вами согласен, однако работая в команде надо думать не только о себе и о неквалифицированности других, иначе все придется делать самому. Это примерно тоже, что и футбол: если один футболист играет лучше других, то не следует выгонять из команды всех "неквалифицированных" футболистов т.к. один, пусть и хороший, футболист явно не потянет игру со слаженной и группой, пусть и не таких квалифицированных. футболистов. Прости за отвлечение.

Думаю что ценнее слаженность работы, чем отличительно более высокая квалификация отдельного программиста, т.к. этот программист будет писать "для себя" и остальным в комманде нечем будет заняться кроме разбора "гениального" кода. Т.е. смысл в том, чтобы все работали слаженно.

ЗЫ Так можно договориться до того, что в команде каждый должен собюдать свой вариант форматирования кода т.к. ему наплевать, что кто-то привык к установленному среди остальных варианту оформления и внести эту тему в "религиозные войны".
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  20:06 Найти цитируемый пост)
Я сомниваюсь, что вы поняли о чем я. Могу перефразировать:
Лично Вы где потенциально допустите больше ошибок в простом или в сложном коде.

Повторюсь насчет вашего примера:

У меня на прошлой работы было 25 программистов из которых только двое знали что такое шаблоны. Полный офис бездарей - но писали вроде. Никто не жаловался.

Цитата(fry @  17.5.2009,  20:06 Найти цитируемый пост)
Шаблоны проектирования лишь описание варианта создания некоторого поведения для решения конкретной задачи. Это не код, это принцип, его не проверяют, его используют или не используют.

каждый шаблон проектирования уже имеет реализацию на C++. Посмотрите к примеру книгу Андрея Александреску - Современное проектирование на C++ - там описан синглтон Майерса, потом описаны проблемы которые в некоторых случая могут возникнуть при его использовании, потом описаны методы решения этих проблем..и так далее. Это для примера, есть шаблон проектирования - синглтон, он нем много сказано, написано итд...мы уже знаем методы его реализации и практически все проблемы которые мы можем иметь при его использовании. Это можно сказать - проверенное средство.

Цитата(fry @  17.5.2009,  20:06 Найти цитируемый пост)
Если писать код исключительно для себя, то я с вами согласен, однако работая в команде надо думать не только о себе и о неквалифицированности других, иначе все придется делать самому. Это примерно тоже, что и футбол: если один футболист играет лучше других, то не следует выгонять из команды всех "неквалифицированных" футболистов т.к. один, пусть и хороший, футболист явно не потянет игру со слаженной и группой, пусть и не таких квалифицированных. футболистов. Прости за отвлечение.

стадо бизонов бежит со скоростью самого медленного бизона. Когда на стадо охотятся хищники, первыми умирают последние - самые медленные и слабые особи. Таким образом, натуральный отбор помогает стаду, потому что стадо в целом становится быстрее и выносливее после отсева слабых его членов. 

Научный факт smile 


Это сообщение отредактировал(а) azesmcar - 17.5.2009, 20:30
PM   Вверх
zim22
Дата 17.5.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 29
Всего: 69



Цитата(azesmcar @  17.5.2009,  20:30 Найти цитируемый пост)
каждый шаблон проектирования уже имеет реализацию на C++. Посмотрите к примеру книгу Андрея Александреску

В самой книге GoF для каждого паттерна есть пример кода на С++.


--------------------
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(zim22 @  17.5.2009,  20:58 Найти цитируемый пост)
В самой книге GoF для каждого паттерна есть пример кода на С++. 

 smile 
PM   Вверх
Lazin
Дата 17.5.2009, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



Цитата(zim22 @  17.5.2009,  20:58 Найти цитируемый пост)
В самой книге GoF для каждого паттерна есть пример кода на С++. 

свет клином не сошелся на этой книге и паттерны, которые там описаны - это база smile 
иногда, люди, прочитавшие эту книгу начинают применять антипаттерн "золотой молоток", тоесть видеть паттерны там, где им не место... думаю именно об этом и говорит fry, многие программы не нуждаются в квалифицированых специалистах и пишутся студентами по случаю...
Я считаю, что программы должны писать компетентыне программисты, которых не удивить сложно-извращенными оборотами языка С++ smile . Но некоторые программы того не стоят smile 
PM MAIL Skype GTalk   Вверх
fry
Дата 17.5.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



В придераетесь к словам, которые являются лишь коментариями к предыдущим вопросам. Отписав несколько постов вы так и не ответили на вопрос:
Цитата

Лично Вы где потенциально допустите больше ошибок в простом или в сложном коде?


Говоря о паттернах и имея ввиду их реализацию так и говорите. У меня в книге, например, все паттерны наряду с кодом имеется и графическое представление имхо основное в понимании концепции. Таким образом делаем вывод, что ваш ответ на 
Цитата

Шаблоны проектирования лишь описание варианта создания некоторого поведения для решения конкретной задачи. Это не код, это принцип, его не проверяют, его используют или не используют. (Fry)

является в некоторой степенью не соответствующем теме. Вы сами сказали о его реализации, так вот о процессе реализации (и потенциальных ошибках) и был разговор, а не о том, что хорошо продуманные паттерны (как принцип) - есть залог безошибочного кодирования, что подчеркивается предыдущим вопросом, заданным несколько постов назад.

Цитата

Цитата(fry @  17.5.2009,  20:06 Найти цитируемый пост)
Я сомниваюсь, что вы поняли о чем я. Могу перефразировать:
Лично Вы где потенциально допустите больше ошибок в простом или в сложном коде.

Повторюсь насчет вашего примера:

У меня на прошлой работы было 25 программистов из которых только двое знали что такое шаблоны. Полный офис бездарей - но писали вроде. Никто не жаловался.

Вы проверили мой подход? Результатом выявления реальной эффективности того или иного подхода можно проверить лишь при сравнении. 
Также насчет "бездарей". Я в 10 раз повторяю: мои слова не относятся к ним. Если проще: я говорил о "гениальности" в сравнении со средним рограммистом умеющем писать/читать код на  шаблонах, классах, возможно некоторых паттернах и ничего не знающих о typelis'ах. Не пытайтесь найти в моих постах крайностей, попытайтесь вникнуть в суть. Бесконечно благодарен за внимание.

На счет жесткой позиции применять паттерны или нет. Естесссно применять, но только там, где это реально нужно, а не везде пихать верхушки "извращений" (в хорошем смысле; не лови меня на этом слове) чтобы народ восхищался этим творением так прекрасно выглядешем и работающем, но для них не понятным. И когда этот человек уходит из коллектива народ судорожно начинает вникать в работу кода чтобы подправить некоторые моменты.

Lazin, спасибо, надеюсь твое разъяснение будет более доходчиво. Полностью поддерживаю.

Это сообщение отредактировал(а) fry - 17.5.2009, 21:37
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Lazin @  17.5.2009,  21:32 Найти цитируемый пост)
иногда, люди, прочитавшие эту книгу начинают применять антипаттерн "золотой молоток", тоесть видеть паттерны там, где им не место... думаю именно об этом и говорит fry, многие программы не нуждаются в квалифицированых специалистах и пишутся студентами по случаю...

Скажем так - прочитавшие - но не понявшие ее предназначение smile 

Цитата(Lazin @  17.5.2009,  21:32 Найти цитируемый пост)
иногда, люди, прочитавшие эту книгу начинают применять антипаттерн "золотой молоток", тоесть видеть паттерны там, где им не место...

знакомая ситуация smile
до боли знакомая...приходилось видеть


Цитата(Lazin @  17.5.2009,  21:32 Найти цитируемый пост)
думаю именно об этом и говорит fry, многие программы не нуждаются в квалифицированых специалистах и пишутся студентами по случаю...

так об этом я не спорю. но я тоже считаю
Цитата(Lazin @  17.5.2009,  21:32 Найти цитируемый пост)
что программы должны писать компетентыне программисты, которых не удивить сложно-извращенными оборотами языка С++ 


PM   Вверх
Lazin
Дата 17.5.2009, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 27
Всего: 154



не следует забывать, что паттерны(и вообще OOP/OOD) служат для упрощения кода, а не для его усложнения
PM MAIL Skype GTalk   Вверх
azesmcar
Дата 17.5.2009, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(fry @  17.5.2009,  21:35 Найти цитируемый пост)
Лично Вы где потенциально допустите больше ошибок в простом или в сложном коде?

Я думал что ответил на этот вопрос.
Смотря что вы считаете сложным кодом, если считать сложным кодом. Если это сложный алгоритм то разумеется в сложном алгоритме. А сам код - сложным не бывает если он написан грамотно. Код бывает либо понятен, либо нет. Грамотно написанный код, должен быть понятен любому грамотному программисту. 

Цитата(fry @  17.5.2009,  21:35 Найти цитируемый пост)
является в некоторой степенью не соответствующем теме. Вы сами сказали о его реализации, так вот о процессе реализации (и потенциальных ошибках) и был разговор, а не о том, что хорошо продуманные паттерны (как принцип) - есть залог безошибочного кодирования, что подчеркивается предыдущим вопросом, заданным несколько постов назад.

какой теме? smile мы уже давно отошли от темы и спорим по поводу (немного связанных с темой вещей). Патерны ни есть залог безошибочного кодирования, я такого не говорил. Такого залога вообще не существует. smile 

Цитата(fry @  17.5.2009,  21:35 Найти цитируемый пост)
На счет жесткой позиции применять паттерны или нет. Естесссно применять, но только там, где это реально нужно, а не везде пихать верхушки "извращений" (в хорошем смысле; не лови меня на этом слове) чтобы народ восхищался этим творением так прекрасно выглядешем и работающем, но для них не понятным. И когда этот человек уходит из коллектива народ судорожно начинает вникать в работу кода чтобы подправить некоторые моменты.

Lazin, спасибо, надеюсь твое разъяснение будет более доходчиво. Полностью поддерживаю.

Если вы имеете ввиду то что сказал Lazin - то я с вами согласен, только в ваших постах эта позиция проявляется слабо, или я просто ее не замечаю. Насколько я понял вы имеете ввиду что программисты не должны писать сложные конструкции (это те которые не описаны в каждой книге по C++, а только в некоторых), даже там где они нужны, потому что кто-то может их не понять.. Надо писать максимально просто ..итд..

Это сообщение отредактировал(а) azesmcar - 17.5.2009, 21:46
PM   Вверх
fry
Дата 17.5.2009, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 257
Регистрация: 4.10.2006

Репутация: 2
Всего: 3



Цитата

Естесссно применять, но только там, где это реально нужно,...


Эта срочка есть в коментах вашего поста - ответ на ваш вопрос.

Цитата

.....вы имеете ввиду что программисты не должны писать сложные конструкции (это те которые не описаны в каждой книге по C++, а только в некоторых), даже там где они нужны,....


ЗЫ Lazin меня понял, не знаю чего ва непонятно в моих постах.

"Надо писать максимально просто, но не проще" Цитата из Страуструпа. 
Я про это и писал.

Это сообщение отредактировал(а) fry - 17.5.2009, 21:52
PM MAIL   Вверх
azesmcar
Дата 17.5.2009, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 52
Всего: 211



Цитата(Lazin @  17.5.2009,  21:32 Найти цитируемый пост)
думаю именно об этом и говорит fry

Похоже на предположение smile ну да ладно.. smile 
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1446 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.