Дело не в том, что я считаю шаблоны бесполезными....
скажем, если мне нужно запрограмировать две стандартные кнопки, я не буду писать с нуля
А вот другой вариант, я делаю что то, для чего нет готового шаблона, а так-как в моём случае,
код будет использоваться один раз в одной проге, то мне накладно делать что то что не ускорит, а наоборот замедлит дату окончательного
релиза....
Здравствуйте, DEMON HOOD, Вы писали:
DH>А вот другой вариант, я делаю что то, для чего нет готового шаблона, а так-как в моём случае, код будет использоваться один раз в одной проге, то мне накладно делать что то что не ускорит, а наоборот замедлит дату окончательного релиза....
Дело в том что
1)Всегда можно найти код который используется по крайней мере в 2х местах.
2)Ни когда не знаешь понадобится ли тебе этот кусок кода гдето еще
3)Загнать в шаблон не на много дольше чем просто написать
4)Даже если используется один раз то вынесение дополнительной операции из основного алгоритма делает код понятней
Пример: Надо мне было один раз в одной программе получить список файлов из одной папки я не долго думая написал
C_FindFile find_file(path+"\\*.ggg");
while(find_file.Find())
{
find_file.FileName();//получаем имя текущего файла
}
Как бы выглядил цикл без этого класса думаю обьяснять не стоит.
С шаблонами таже история только если видишь что класс можно использовать с разными типами то делаешь его шабоном.
Я уже не говорю про различные утилиты (они используются от десятков до тысяч раз) типа смартпоинеров (у меня свои похожие на boost::intrusive_ptr только по наворочение) и статический полиформизм который порой позволяет значительно поднять производительность.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DEMON HOOD, Вы писали:
DH>Дело не в том, что я считаю шаблоны бесполезными....
DH>скажем, если мне нужно запрограмировать две стандартные кнопки, я не буду писать с нуля DH>А вот другой вариант, я делаю что то, для чего нет готового шаблона, а так-как в моём случае, DH>код будет использоваться один раз в одной проге, то мне накладно делать что то что не ускорит, а наоборот замедлит дату окончательного DH>релиза....
DH>Резюме DH>не всегда правильно всё делать по науке.
Я не Вольфхаунд, но прокомментирую.
Я всегда стараюсь писать код с прицелом на reusability.
Если какой-то класс потенциально может быть применён для
более чем одного конкретного типа — быть ему шаблоном!
При написании кода это не вносит особого замедления,
и код работает ровно с такой же скорость.
Зато когда вдруг возникает схожая задача — вуаля, всё готово
Уже неоднократно несколько минут на "посидеть, подумать" экономили часы работы.
Здравствуйте, DEMON HOOD, Вы писали:
DH>Дело не в том, что я считаю шаблоны бесполезными....
DH>скажем, если мне нужно запрограмировать две стандартные кнопки, я не буду писать с нуля DH>А вот другой вариант, я делаю что то, для чего нет готового шаблона, а так-как в моём случае, DH>код будет использоваться один раз в одной проге, то мне накладно делать что то что не ускорит, а наоборот замедлит дату окончательного DH>релиза....
Можно и я выскажу своё ню
Дело в том, что программирование раньше было скорее искусством, чем ремеслом или наукой. Сейчас многое по-другому и медленно но верно в программировании входит СТАНДАРТИЗАЦИЯ, то есть существующая проблема делится на составляющие части, и эти части уже решаются стандартными средствами. Приведу примеры:
1. Паттерны проектирования
2. Идиомы (начальные и продвинутые)
3. Библиотеки (STL, boost, и пр.)
Конечно, возможна задача, для которой все подобные решения неприменимы (хотя я например такой задачи не встречал), но тебе всё-равно придётся обходится стандартными средствами, если ты собираешься использовать C++.
Здравствуйте, WolfHound, Вы писали:
WH>Я уже не говорю про различные утилиты (они используются от десятков до тысяч раз) типа смартпоинеров (у меня свои похожие на boost::intrusive_ptr только по наворочение)
Интересно, в чем и зачем твои указатели навороченнее intrusive_ptr ?
Здравствуйте, folk, Вы писали:
F>Интересно, в чем и зачем твои указатели навороченнее intrusive_ptr ?
Я с СОМ много работаю и нужны attach/detach (это понятно) и accept
Здравствуйте, LCR, Вы писали:
LCR>Можно и я выскажу своё ню
LCR>Дело в том, что программирование раньше было скорее искусством....... LCR>LCR>Конечно, возможна задача, для которой все подобные решения неприменимы (хотя я например такой задачи не встречал), но тебе всё-равно придётся обходится стандартными средствами, если ты собираешься использовать C++.
Да в моём коде никакого исскуства нет, стояяла задача сделать прогу заносящие в таблицу ексель данные в нужные ячейки,
программа была написана при помощи комбинаций ктрлЦ ктрлВ, я не использовал там даже простых циклов и т подобное.
Прога работает и будет работать ещё 1000 лет, но мне от этого не перепадёт ни копейки больше чем я получил.
Изменять/сопровождать код, или выпускать прогу версия 2 не предполагалось изначально, и я считаю, что получил максимальную прибыль при минимальных затратах.
Здравствуйте, e-Xecutor, Вы писали:
EX>Я не Вольфхаунд, но прокомментирую. EX>Я всегда стараюсь писать код с прицелом на reusability. EX>Если какой-то класс потенциально может быть применён для EX>более чем одного конкретного типа — быть ему шаблоном! EX>Уже неоднократно несколько минут на "посидеть, подумать" экономили часы работы.
в 9 случаях из 10 я угадывал, что этот мой конкретный код никогда не будет использован повторно.... в других проектах
Ну а когда предполагалось повторное использование, то уж конечно и классы и шаблоны и всё что только можно
Здравствуйте, WolfHound, Вы писали:
WH>Как бы выглядил цикл без этого класса думаю обьяснять не стоит.
WH>С шаблонами таже история только если видишь что класс можно использовать с разными типами то делаешь его шабоном.
Да, всё круто!
Я вот вспомнил как писал кучу курсовых, контрольных для студентов-двоечников...
скажешь мне нужно было каждый раз использовать классы/шаблоны для какой нибудь... транспонирование матрицы например?
Да они с трудом защитили прогу с процедурным подходом......
Здравствуйте, DEMON HOOD, Вы писали:
DH> Я вот вспомнил как писал кучу курсовых, контрольных для студентов-двоечников... DH> скажешь мне нужно было каждый раз использовать классы/шаблоны для какой нибудь... транспонирование матрицы например? DH> Да они с трудом защитили прогу с процедурным подходом......
И при чем тут студенты двоечники?
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DEMON HOOD, Вы писали:
DH>в 9 случаях из 10 я угадывал, что этот мой конкретный код никогда не будет использован повторно.... в других проектах
Гм. У меня из проекта в проект переезжает половина кода... Ибо вторая половина это логика, а вся обслуга которой до одури перезжает...
В конце концов я ее просто в отдельную библиотеку выделил.
... << RSDN@Home 1.1.3 beta 1 >>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DEMON HOOD, Вы писали:
DH>Изменять/сопровождать код, или выпускать прогу версия 2 не предполагалось изначально, и я считаю, что получил максимальную прибыль при минимальных затратах.
В данном топике рассматривается программирование на С++, как явление (занятие, если хочешь) длительное. Твои замечания — не в тему.