Anonymous | Login | Signup for a new account | 03-12-24 17:51 UTC |
All Projects | SAS.Планета | Домен, сайт, форум, багтрекер | Доработка карты (ZMP) | Переводы и локализации | Прочее |
My View | View Issues | Change Log | Roadmap | Search |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||||||
0003455 | SAS.Планета | Рефакторинг | public | 13-06-2019 07:33 | 28-04-2020 09:35 | ||||||||
Reporter | vdemidov | ||||||||||||
Assigned To | |||||||||||||
Priority | none | Severity | trivial | Reproducibility | N/A | ||||||||
Status | new | Resolution | open | ||||||||||
Platform | OS | OS Version | |||||||||||
Product Version | 181221 | ||||||||||||
Target Version | Fixed in Version | ||||||||||||
Summary | 0003455: Упорядочить удаление объектов по FreeAndNil и просто .Free | ||||||||||||
Description | В продолжении дискуссии по поводу правильного способа удаления объектов. Нужно ли применять FreeAndNil или достаточно просто вызова .Free Аргументация за FreeAndNil https://www.gunsmoker.ru/2009/04/freeandnil-free.html Вот еще ссылочка на дискуссию http://programmingmindstream.blogspot.com/2014/01/freeandnil.htm Ну а вот аргументация против http://www.nickhodges.com/post/Using-FreeAndNil.aspx | ||||||||||||
Steps To Reproduce | Мое мнение использовать простое правило: Для удаления локальных переменных достаточно просто вызвать .Free, если нет обязательной необходимости в занулении. Для полей класса - вызывать FreeAndNil. Просто формулируется. Просто проверяется. Даже обычным поиском с RegExp по исходникам проекта. | ||||||||||||
Additional Information | Текущее состояние: Free для полей класса - 13 вызовов. FreeAndNil для полей класса - 340 вызовов. Free для локальных переменных - 401 - вызовов FreeAndNil для локальных переменных - 52 вызовов Числа примерные, но видно что в принципе предложенное правило в общем соблюдается. У Zed есть возражение против излишнего применения FreeAndNil для всех полей класса, но как я понимаю нет возражений, против того что бы для локальных переменных использовать просто .Free | ||||||||||||
Tags | No tags attached. | ||||||||||||
Attached Files | |||||||||||||
Notes | |
(0019800) zed (manager) 28-04-2020 08:54 |
Просто в тему: в Delphi 10.4 они изменили сигнатуру FreeAndNil. было: procedure FreeAndNil(var Obj); стало: procedure FreeAndNil(const [ref] Obj: TObject); inline; |
(0019801) vdemidov (manager) 28-04-2020 09:03 |
И что это значит? Она перестала занлулять переменную? |
(0019802) zed (manager) 28-04-2020 09:06 |
Не перестала, просто они осознали, что старая версия приводила к багам, т.к. не было проверки типа. |
(0019803) vdemidov (manager) 28-04-2020 09:35 |
Аааа. Точно. И это хорошо. Это правильно :) |
Users who viewed this issue | |
User List | Anonymous (1173x), ingener (1x), zed (6x), vdemidov (16x) |
Total Views | 1196 |
Last View | 03-12-2024 17:51 |
Issue History | |||
Date Modified | Username | Field | Change |
13-06-2019 07:33 | vdemidov | New Issue | |
28-04-2020 08:54 | zed | Note Added: 0019800 | |
28-04-2020 09:03 | vdemidov | Note Added: 0019801 | |
28-04-2020 09:06 | zed | Note Added: 0019802 | |
28-04-2020 09:35 | vdemidov | Note Added: 0019803 |
My View | View Issues | Change Log | Roadmap | Search |
Copyright © 2007 - 2024 SAS.Planet Team |