arisu писал(а):
да, вы правы, это как раз те редкие случаи, когда оно надо. поэтому я в LC просто переименовал `.Close` в `.ForceCloseFile`. уродливое-имя-фиг-запомнишь выбрано специально. но я в LC могу себе позволить немного наплевать на совместимость, а вот как быть с mainline — не знаю. я бы всё-таки голосовал за переименование: для переноса на 2.0 всё равно придётся некоторые правки кода делать — пусть люди заодно и подумают ещё раз, точно ли им там `.Close` нужно. в документации написать страшные примеры, почему не нужно, чтобы пока ищут новое название — испугались как следует. я что-то типа такого у себя написал:
ROCEDURE (f: File) ForceCloseFile
NEW, ABSTRACT
Closes an open file. You should never call this method manually, the garbage collector will automatically close all unused files (albeit at an unspecified time). Please, note that opening the same file several times will return the same file object, and if you will try to close it, it may break some other code later. That's why it is better to rely on GC for file closing.
конечно, "should never call" — это, пожалуй, слишком сильная конструкция. а с другой стороны — лучше лишний раз напугать, я считаю, и для подавляющего большинства случаев так и есть. а если начать писать в документации сочинения, то люди её читать и вовсе не станут.
Люди не очень любят, когда кто-то создаёт им дополнительную работу. Я думаю, что достаточно краткой ясной и исчерпывающей технической заметки в
википедии про Блэкбокс. И ссылку на эту заметку разошлем через новостной канал.