Форум: "Основная";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
ВнизПрошу оценить статью Найти похожие ветки
← →
KA_ © (2005-08-15 16:22) [0]Subj.
Статья на http://kavlad.boom.ru
← →
Fay © (2005-08-15 16:39) [1]2 KA_ © (15.08.05 16:22)
"Самоубийство объектов..."?
Нудно. Можно было в несколько строк уложиться.
Да и слабовато верится в то, что написатьwith TStringList.Create do
try
LoadFromFile(aFileName); // Читаем строки из файла
Sorted := True; // Наполняем StringList строками
SaveToFile(aFileName); // Сохраняем в файл
finally
Free;
end;
выше человеческих сил.
← →
KA_ © (2005-08-15 16:41) [2]Это простой пример :)
А в крупных проектах очень выручает.
Пример - проект в 119 тыс. строк. И ни одного finally с унгичтожением объектов.
Там вообще меньше 100 finally.
← →
Digitman © (2005-08-15 16:52) [3]
> ни одного finally с унгичтожением объектов.
> Там вообще меньше 100 finally
чем тебе try..finally так насолил ?
в Борланде идиоты, наверно, работают - в VCL чуть ли не на каждом шагу этот "страшный" блок ?
← →
KA_ © (2005-08-15 16:54) [4]Он мне ничем не насолил. :)
Просто когда этих блоков много (или ОЧЕНЬ много), то код тяжело читать. Потому и предлагаю такое "упрощение".
← →
Fay © (2005-08-15 16:55) [5]2 KA_ © (15.08.05 16:41) [2]
Вы представляете себе подобный диалог?
...
- Сколько у тебя finally?
- Много, штук 200...
- О это серьёзный проект! А не пробовал "ужать" часть?
...
← →
KA_ © (2005-08-15 17:01) [6]:))) Ценю юмор.
← →
Digitman © (2005-08-15 17:07) [7]
> KA_ © (15.08.05 16:54) [4]
> когда этих блоков много (или ОЧЕНЬ много), то код тяжело
> читать
когда чей-то код форматирован курициной лапой, его действительно тяжело читать.
в такой ситуации и блок тот совершенно ни при чем - и без того блока ТАКУЮ галиматью можно написать, что смотреть на него потом противно .. не то что читать ..
← →
KA_ © (2005-08-15 17:13) [8]>Digitman © (15.08.05 17:07) [7]
Согласен. Но статья не про форматирование вроде ;)
← →
Fay © (2005-08-15 17:16) [9]2 KA_ © (15.08.05 17:13) [8]
>> Но статья не про форматирование вроде
И не вздумай писать такую!!! Это не какой-то там "Linux vs Windows", это уже серьёзно 8)
← →
Digitman © (2005-08-15 17:19) [10]а если не про форматирование, а про интерфейсы, то и внимание (самое серьезное !) следовало уделить не чьей-то там якобы "лени", а механизму "прозрачного" подсчета ссылок, который реализует компилятор.
← →
KA_ © (2005-08-15 17:25) [11]>Digitman © (15.08.05 17:19) [10]
Я не ставил своей целью осветить тонкости реализации механизма интерфейсов в Delphi. Скорее один из спобових применения :)
Если Вас задели слова о лени делфистов - прошу прощения, я их уберу. Статья ведь писалась не для оскорбления. Сам способ был придуман, как аргумент в споре Dilphi vs. C++
← →
Fay © (2005-08-15 17:27) [12]2 KA_ © (15.08.05 17:25) [11]
>> Сам способ был придуман, как аргумент в споре Dilphi vs. C++
Ни за что бы не догадался
← →
KA_ © (2005-08-15 17:32) [13]>Fay © (15.08.05 17:27) [12]
Спасибо, Федя. Хоть ты меня поддержал!
← →
TUser © (2005-08-15 17:54) [14]Имхо, никакая функция/процедура не должна быть длинее 20-30 строчек. Иначе ее трудно читать. А при такой длине туда много try блоков не впишешь.
← →
Fay © (2005-08-15 18:09) [15]2 TUser © (15.08.05 17:54) [14]
Читать ваще трудно...
← →
KA_ © (2005-08-15 18:13) [16]>TUser © (15.08.05 17:54) [14]
Конечно. По мотивам Стива МакКоннела "Совершенный код" :)
Предложенный прием позволяет сократить количество строчек.
Но не только!
Не все объекты просто уничтожаются, чтобы освободить память.
Я применил один раз такой подход: временный объект в деструкторе дергает глобальные объекты синглетоны и вызывает некоторую обработку (скажем, замеры производительности - отсылает объекту-логгеру тики), по состоянию этого объекта можно судить о том какие операции прошли, а какие закончились неудачей - значит обработка и реакция может быть достаточно сложной.
Есть, например, у меня объект Connection - соединение с БД. Он расчитан на одну короткую транзакцию. При уничтожении он может подтвердить эту транзакцию, а может откатить в зависимости от совего состояния. Можно придумать и другие применения.
← →
KA_ © (2005-08-15 18:14) [17]>Fay © (15.08.05 18:09) [15]
Убедительная просьба, если нет каки-нибудь конкретных пожеланий или предложений, не писать в ветку лишних сообщений. Пожалуйста.
← →
Игорь Шевченко © (2005-08-15 18:30) [18]Полный адрес статьи можно ?
← →
KA_ © (2005-08-15 20:38) [19]Полный адрес http://kavlad.boom.ru/delphi/obj_suicide.htm
← →
Наиль © (2005-08-16 03:35) [20]>[9]
О форматировании: http://www.infocity.kiev.ua/d.php?f=1&u=prog/delphi/content/delphi185.phtml?id=2810
← →
KA_ © (2005-08-16 13:17) [21]Статья доступна в виде архива по ссылке http://www.rsdn.ru/File/12685/ObjSuicide.zip
← →
Игорь Шевченко © (2005-08-16 14:02) [22]KA_ © (15.08.05 20:38) [19]
Идея интересная, но вот кажется мне, что кода придется больше писать в результате :)
А тот же МакКоннел вроде пишет, что не стоит изобретать сущностей сверх необходимости...
← →
KA_ © (2005-08-16 14:05) [23]>Игорь Шевченко © (16.08.05 14:02) [22]
Ну... Так не только МакКоннел пишет :)
Вот обсуждение этой статьи на RSDN http://gzip.rsdn.ru/forum/?mid=1327347
Там некоторые аспекты обсосали и я приводил статистику по одному своему проекту.
← →
Игорь Шевченко © (2005-08-16 14:17) [24]KA_ © (16.08.05 14:05) [23]
Тут еще момент есть один - грядет .Net, а там проблемы с обязательным Free возложены на сборщик мусора, так что обертывать код в try...finally становится и вовсе необязательным...
Удачи!
← →
KA_ © (2005-08-16 14:19) [25]>Игорь Шевченко © (16.08.05 14:17) [24]
Статья вроде не про дотНет :)
← →
Игорь Шевченко © (2005-08-16 15:22) [26]KA_ © (16.08.05 14:19) [25]
Про статью я высказался :) То есть, оно интересно, как идея, весьма вероятно, что кому-то окажется подспорьем написание таких вот оберток, но, повторюсь, переходить на .Net призывают довольно агрессивно, а там эта проблема не столь актуальна :)
Кроме того, на мой взгляд, такие обертки хорошо писать, когда классов, используемых подобным образом, не так много, а используются они довольно регулярно.
Удачи!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.09.04;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.01 c