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

Вниз

Прошу оценить статью   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.045 c
1-1123778951
Дельфин
2005-08-11 20:49
2005.09.04
Изменение курсора на границе панели


1-1123867834
Андрей Молчанов
2005-08-12 21:30
2005.09.04
TTreeView неправильная прорисовка границ


1-1124177958
alex-drob
2005-08-16 11:39
2005.09.04
Сообщение приложению не имеющего окна


6-1116414790
lifo
2005-05-18 15:13
2005.09.04
Работа с сокетами в консольных приложениях


3-1122450217
Zmiy
2005-07-27 11:43
2005.09.04
ADOStoredProc