Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.011 c
8-1114401843
Rusland
2005-04-25 08:04
2005.09.04
Вывод метафайла на канву формы.....


14-1123669362
Petr V. Abramov
2005-08-10 14:22
2005.09.04
Честный способ отъема денег :)


4-1121696153
ArtemKin
2005-07-18 18:15
2005.09.04
Винты и Винды


4-1121706798
Trimp
2005-07-18 21:13
2005.09.04
Чтение из реестра переменных с типом REG_MULTI_SZ


6-1116700838
avtsasha
2005-05-21 22:40
2005.09.04
Выполнение php скриптов через делфю





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский