Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.08;
Скачать: CL | DM;

Вниз

Освобождение ресурса в 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;
Скачать: CL | DM;

Наверх




Память: 1.09 MB
Время: 0.117 c
6-1188851972
Aibolit
2007-09-04 00:39
2008.06.08
в терминальном сервере


2-1210623772
rena
2008-05-13 00:22
2008.06.08
Расстановки ладей на шахматной доске


15-1209297079
Kostafey
2008-04-27 15:51
2008.06.08
С днем рождения ! 27 апреля


15-1209129515
snake-as
2008-04-25 17:18
2008.06.08
Работа с Exel


15-1209021341
inew
2008-04-24 11:15
2008.06.08
Язык ввода по умолчанию