Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизОсвобождение ресурса в finally Найти похожие ветки
← →
Leonid Troyanovsky © (2008-04-25 16:18) [240]
> Игорь Шевченко © (25.04.08 16:07) [237]
> С точностью до наоборот, чем реже, тем больше смысла делать
> динамическим
Путаница между "частыми вызовами" и "частыми перекрытиями".
А про диспетчеризацию (это ж юзеровские действия) -
time-critical - не критично.
--
Regards, LVT.
← →
jack128_ (2008-04-25 16:20) [241]
> Спор прекращаю.
жаль, я хотел узнать, что у меня за
>небольшие проблемы с пониманием сути базовых терминов ООП, поэтому смысла нет.
-)
← →
Leonid Troyanovsky © (2008-04-25 16:24) [242]
> Восхищенный (25.04.08 16:11) [239]
> Поэтому динамический метод хорош как раз тогда, когда вероятность
> его перекрытия невелика.
У метода диспетчеризации вероятность перекрытия весьма ненулевая.
И, вот именно оные рекомендовали к динамическим.
Полистай Конопку и доложи, плиз, а то у меня под рукой нет.
Но, оное обсуждение весьма академично, бо, пользующих ныне
dynamic можно счесть по пальцам одной руки.
--
Regards, LVT.
← →
Восхищенный (2008-04-25 16:37) [243]> Leonid Troyanovsky © (25.04.08 16:24) [242]
> Полистай Конопку и доложи, плиз, а то у меня под рукой нет.
Уговорил. Вечером доложу (сейчас его тоже нет под рукой). С указанием точной цитаты и точного номера страницы. На чем, полагаю, спор и будет завершен.
Только имей в виду следующее. Книгу Конопки я знаю чуть ли не наизусть, поэтому точно помню, что о выборе "virtual vs dynamic" он действительно говорит. И точно помню, что именно он об этом говорит. И точно знаю, что в итоге ты окажешься неправ.
И что тогда, о великий спорщик? Ты публично посыпешь голову пеплом?
← →
Leonid Troyanovsky © (2008-04-25 16:37) [244]
> Игорь Шевченко © (25.04.08 16:07) [237]
> С точностью до наоборот, чем реже, тем больше смысла делать
> динамическим
Был неправ, sorry.
Dynamic methods are useful when a base class declares many overridable methods which are inherited by many descendant classes in an application,
but only occasionally overridden.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-04-25 16:42) [245]
> Восхищенный (25.04.08 16:37) [243]
> И что тогда, о великий спорщик? Ты публично посыпешь голову
> пеплом?
Есть необходимость? :)
Правило простое - для методов диспетчеризации - dynamic.
Остальное - virtual.
Я освободил тебя от перечитывания Конопки ;)
--
Regards, LVT.
← →
ANB (2008-04-25 17:06) [246]
> В этом и отгадка того, почему обычно не стоит обрамлять
> вызов
> конструктора, бо, в ООП для хранения ссылок на объекты более
> естественны поля, а вовсе не локальные переменные.
Я не говорил, что не надо обрамлять. А если отвалится создание третьего объекта (предположим, что нам надо 3 файлстрима, у которых вероятность рэйза не равна нулю), что будет с первыми двумя ? Опять вложенные трай городить ?
← →
ANB (2008-04-25 17:14) [247]Домой пора.
Вобчем то по поводу объекты + трай файнелли я уж лучше послушаю Сашу Просторова.
Как то привык доверять его мнению. Сколько раз проверял даже спорные советы - он всегда оказывался прав. А если не знает, как лучше - так и советов не дает.
А тем, кто сомневается в его авторитете :
http://softwarer.ru/certifications.html
Ну и плюс мона зайти на SQL.ru, поближе познакомится.
← →
Восхищенный (2008-04-25 17:14) [248]> Leonid Troyanovsky © (25.04.08 16:42) [245]
> Есть необходимость?
ОК, от посыпания головы пеплом я тебя тоже освобождаю. Такой необходимости действительно нет.
Есть другая неоходимость - поменьше снобизма проявлять. Вот такого, например: "Полистай Конопку и доложи".
Тебе не приходило в голову, что ты тут вовсе не наместник бога? И что тут найдутся люди, которые Delphi и Конопку знают, как минимум не хуже тебя?
Надеюсь, ты это усвоил.
← →
Leonid Troyanovsky © (2008-04-25 18:26) [249]
> Восхищенный (25.04.08 17:14) [248]
> Тебе не приходило в голову, что ты тут вовсе не наместник
> бога? И что тут найдутся люди, которые Delphi и Конопку
> знают, как минимум не хуже тебя?
Смотрел, смотрел и не усмотрел никакого снобизма.
Бо, нет у меня ни Конопки, ни Шрайбера, ни других Руссиновичей
под рукой.
Поэтому и попросил.
Ну, а если ломает, то извини, сами уж как нибудь.
--
Regards, LVT.
← →
Восхищенный (2008-04-25 18:30) [250]> Leonid Troyanovsky © (25.04.08 18:26) [249]
Не юли. Все ты прекрасно понял.
"Попросил" он, видите ли. Доложить.
И хватит об этом.
← →
Leonid Troyanovsky © (2008-04-25 18:37) [251]
> Восхищенный (25.04.08 18:30) [250]
> "Попросил" он, видите ли. Доложить.
Простите, г-н генерал-майор, засранца.
Говорила ж мама: увидел анонима - отойди.
--
Regards, LVT.
← →
Loginov Dmitry © (2008-04-25 20:45) [252]> Дело в том, что вероятность того, что TBitmap или TJPEGImage
> дадут exception в конструкторе - ну практически нулевая.
+1
Даже при стихийном действии скорее погорит все напрочь, чем тут exception возникнет :)
На практике доводилось юзать только один класс, в котором exception в конструкторе возникает (TFileStream). Других щас и не припомню...
← →
Anatoly Podgoretsky © (2008-04-26 00:57) [253]> Loginov Dmitry (25.04.2008 20:45:12) [252]
Программисты ИБМ тоже так говорили, когда придумывали формат даты для ДОС и БИОС
← →
Восхищенный (2008-04-26 12:01) [254]1. "Этого не случится никогда, потому что вероятность этого очень мала и потому что в моей практике такого еще ни разу не случалось" - очень распространенный (к сожалению) взгляд дилетантов.
2. Два присваивания подряд:A := nil;
это код дилетанта.
try
A := TSomeClass.Create;
...
3. Код, в котором пытаются защитить сразу группу ресурсов одним try:try
O1 := TSomeClass1.Create;
O2 := TSomeClass2.Create;
...
ON := TSomeClassN.Create;
...
finally
O1.Free; // Или FreeAndNil
O2.Free;
...
O3.Free;
end;
тоже код дилетанта.
4. И только вот такой код:захват_одного_ресурса;
try
...
finally
освобождение_этого_ресурса
end;
это правильный, профессиональный код. И при грамотном структурировании программы глубина вложенности try в одном методе в 99.9% случаев не превышает трех (что вполне нормально и вполне читаемо). В оставшемся 0.1% сколько нужно вложенных try - столько и нужно честно писать, а не халтурить. Но сначала, как совершенно верно заметил Palladin, стоит задуматься - а все ли хорошо в консерватории?
Только так. И всякие иные рассуждения на эту тему есть попытки подвести базу под лень и дилетантизм.
← →
Loginov Dmitry © (2008-04-26 12:40) [255]> 2. Два присваивания подряд:
> A := nil;
> try
> A := TSomeClass.Create;
> ...
> это код дилетанта.
> 3. Код, в котором пытаются защитить сразу группу ресурсов
> одним try:
> try
> O1 := TSomeClass1.Create;
> O2 := TSomeClass2.Create;
> ...
> ON := TSomeClassN.Create;
> ...
> finally
> O1.Free; // Или FreeAndNil
> O2.Free;
> ...
> O3.Free;
> end;
> тоже код дилетанта.
Очень жаль, что Delphi и VCL разрабатывают одни дилетанты. Грустно даже... :(
← →
Экс-Оригинал (2008-04-26 20:20) [256]
> Только так. И всякие иные рассуждения на эту тему есть попытки
> подвести базу под лень и дилетантизм.
Это твои личные мысли? Или мысли неких "Классиков"?
На чем основаны твои безапелляционные утверждения?
НАсчет Конопки и снобизма ты молодец, но надо не только чужие утверждения опровергать, но и свои доказывать.
Я поначалу тоже удумал в защите группы ресурсов некоторую неправильность.
Но доказать эту неправильность не смог для себя.
Если у тебя есть конкретные аргументы, а не просто догматические утверждения, то сюда их, пожалуйста.
← →
Экс-Оригинал (2008-04-26 20:21) [257]
> Восхищенный (25.04.08 18:30) [250]
PS.
А дискуссию провёл на ++ ;)
← →
Восхищенный (2008-04-26 20:40) [258]> Экс-Оригинал (26.04.08 20:20) [256]
Вряд ли я нуждался в комментариях и уж тем более в поощрениях.
Насчет [254] - доказывать я никому ничего не собираюсь. Ты же видишь - [255] было просто проигнорировано (хотя не совсем - улыбнулся).
Доказать можно, но слишком долго - это раз. И некому - это два. Поскольку профи в этом и так не нуждаются, а дилетанты все равно не поймут.
Каждый, кто хочет, может просто принять на веру - и его код станет лучше.
← →
Пёсик В (2008-04-26 21:07) [259]
> 2. Два присваивания подряд:A := nil;try A := TSomeClass.
> Create; ...это код дилетанта.
Хотелось бы вот насчет этого комментарий услышать.
Первая строка присваивание, а вторая - выполнение функции, и лишь потом присваивание.
Так что это не одинаковые присваивания.
> Ты же видишь - [255] было просто проигнорировано (хотя
> не совсем - улыбнулся).
Я же не о [255] говорю, а о твоих высказываниях.
> Доказать можно, но слишком долго - это раз.
Ну хотя бы основные мысли, ведь сам сказал -
> Поскольку профи в этом и так не нуждаются, а дилетанты все
> равно не поймут.
Не считаю себя дилетантом, однако мысль твоя мне непонятна.
> Каждый, кто хочет, может просто принять на веру...
С какой стати?
← →
Экс-Оригинал (2008-04-26 21:10) [260]
> Восхищенный (26.04.08 20:40) [258]
Сорри, пред. пост от меня. Немного дурковал в трёпе.
← →
Loginov Dmitry © (2008-04-26 22:22) [261]> Доказать можно, но слишком долго - это раз
Пока доказательств не будет, можно считать, что
а) доказать это нельзя
б) доказывать вам просто лень
Насчет [255]. Я просмотрел исходники VCL для Delphi7 - там сплошь и рядом этот "дилетанский" код. Получается, что все, кто Дельфю разрабатывает - дилетанты. А дилетанты не умеют программировать и не знают Delphi. Приходим к однозначному выводу: разработчики Delphi не знают Delphi! Как вам?
← →
Восхищенный (2008-04-27 00:01) [262]> Экс-Оригинал
Не надо меня разводить, не выйдет. Я ж тебе сказал, что доказывать я никому ничего не собираюсь. И объяснил, почему (и прав оказался).
Не хочешь принимать на веру - не принимай, никто не заставляет.
> Loginov Dmitry © (26.04.08 22:22) [261]
Не ври.
← →
Экс-Оригинал (2008-04-27 00:14) [263]
> Не надо меня разводить, не выйдет.
Еще чего - разводить.
> Не хочешь принимать на веру - не принимай, никто не заставляет.
Ты не мессия.
Не хочешь ничего говорить - не флуди.
← →
Восхищенный (2008-04-27 00:20) [264]> Экс-Оригинал (27.04.08 00:14) [263]
Вот именно: не хочешь ничего говорить - не флуди.
Пока ты не появился, разговор шел о Delphi.
← →
{RASkov} © (2008-04-27 00:21) [265]> Я просмотрел исходники VCL для Delphi7 - там сплошь и рядом этот "дилетанский" код.
В VCL сплошь и рядом код такого типа:захват ресурса или создание объекта
try
действия
finally
освобождение ресурса или уничтожение объекта
end;
← →
Игорь Шевченко © (2008-04-27 00:28) [266]столько известных анонимов развелось - диву даться
← →
Loginov Dmitry © (2008-04-27 00:42) [267]> Не ври.
Врать? Зачем мне это?
> В VCL сплошь и рядом код такого типа:
> захват ресурса или создание объекта
> try
> действия
> finally
> освобождение ресурса или уничтожение объекта
> end;
А также там сплошь и рядом код такого типа:
захват ресурса или создание объекта
захват ресурса или создание объекта
try
действия
finally
освобождение ресурса или уничтожение объекта
освобождение ресурса или уничтожение объекта
end;
← →
Экс-Оригинал (2008-04-27 00:44) [268]
> Восхищенный (27.04.08 00:20) [264]
> > Экс-Оригинал (27.04.08 00:14) [263]Вот именно: не хочешь
> ничего говорить - не флуди.Пока ты не появился, разговор
> шел о Delphi.
Хорош демагогию разводить.
Докажи свою точку зрения или согласись, что трепаться нехорошо.
← →
Восхищенный (2008-04-27 00:45) [269]
> Loginov Dmitry © (27.04.08 00:42) [267]
Снова врешь.
← →
Восхищенный (2008-04-27 00:47) [270]> Экс-Оригинал (27.04.08 00:44) [268]
С двух раз тебе тоже непонятно? Тогда ничем не могу помочь.
← →
Экс-Оригинал (2008-04-27 00:47) [271]
> Пока ты не появился, разговор шел о Delphi.
Уж ты точно своими последними высказываниями говоришь о Delphi.
← →
Экс-Оригинал (2008-04-27 00:51) [272]
> Восхищенный (27.04.08 00:47) [270]
> > Экс-Оригинал (27.04.08 00:44) [268]С двух раз тебе тоже
> непонятно? Тогда ничем не могу помочь.
Ну что можно сказать на пустой трёп? Только развести руками.
Он, должно быть, очень невежественный человек, поскольку отвечает на все вопросы, которые ему задают. /Франсуа Вольтер/
← →
Экс-Оригинал (2008-04-27 00:52) [273]
> Восхищенный (27.04.08 00:47) [270]
> > Экс-Оригинал (27.04.08 00:44) [268]С двух раз тебе тоже
> непонятно? Тогда ничем не могу помочь.
Оставайся уподобившимся некоторым товарищам в упоеньи собственной правотой.
← →
Германн © (2008-04-27 01:29) [274]
> Игорь Шевченко © (27.04.08 00:28) [266]
>
> столько известных анонимов развелось - диву даться
>
Одного из них я уже идентифицировал. Только вот какого именно?
:)))
← →
Loginov Dmitry © (2008-04-27 09:15) [275]> Снова врешь.
Ты можешь сам Delphi открыть? Я вот открыл и посмотрел.
А от тебя пока только одни бездоказательные высказывания.
← →
Palladin © (2008-04-27 09:33) [276]
>Loginov Dmitry ©(27.04.08 09:15) [275]
во первых, разработчики делфи не являются богами, они такие же люди как и все, почему бы где нибудь и не схалтурить. во вторых - тебе доказать свое утверждение очень просто. указать конкретный модуль и либо конкретный класс и метод, либо процедуру. почему ты до сих пор не сделал этого? или тебе лишь бы пофлудить?
← →
Palladin © (2008-04-27 09:39) [277]Удалено модератором
Примечание: Offtopic
← →
{RASkov} © (2008-04-27 09:46) [278]Удалено модератором
Примечание: Offtopic
← →
{RASkov} © (2008-04-27 09:50) [279]> указать конкретный модуль и либо конкретный класс и метод, либо процедуру
Замечу только то, что в ответ на это не нужно ничего искать по исходникам VCL...
Открывай любой и Ctrl+F вводи finally + Enter и далее F3.... и постоянно поподается [1] схема...
← →
{RASkov} © (2008-04-27 09:52) [280]> и постоянно поподается [1] схема...
Ну т.е. в [1] не схема, а уже код.... хорошо, схему я в [265] "зарисовал"...
Страницы: 1 2 3 4 5 6 7 8 9
10 11 12 13 14 15 16 17 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
Память: 1.07 MB
Время: 0.826 c