Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1211133293
Favorit
2008-05-18 21:54
2008.06.08
Работа с InterBase


15-1209453265
Восхищенный
2008-04-29 11:14
2008.06.08
LOL


15-1208954366
Knight
2008-04-23 16:39
2008.06.08
Если программы были домами, то они выглядели бы примерно так..


15-1209278624
БарЛог
2008-04-27 10:43
2008.06.08
Христос воскрес!!


15-1209349059
Slider007
2008-04-28 06:17
2008.06.08
С днем рождения ! 28 апреля 2008 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский