SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0003455SAS.ПланетаРефакторингpublic13-06-2019 07:3328-04-2020 09:35
Reportervdemidov 
Assigned To 
PrioritynoneSeveritytrivialReproducibilityN/A
StatusnewResolutionopen 
PlatformOSOS Version
Product Version181221 
Target VersionFixed in Version 
Summary0003455: Упорядочить удаление объектов по 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
TagsNo tags attached.
Attached Files

- Relationships

-  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 (918x), ingener (1x), zed (6x), vdemidov (16x)
Total Views 941
Last View 16-04-2024 10:42

- 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



Copyright © 2007 - 2024 SAS.Planet Team