Если есть стопроцентная гарантия, что команда ничего не меняла - то хорошо, чтобы она не записывалась в историю. Если гарантия 99,9% - то лучше записывать. Вариант, например, как в MS Word, когда отправка на печать меняет историю и документ считается изменённым (вследствие чего его предлагается сохранить перед выходом) - это бред, который только пугает пользователя (он ведь ничего не менял, а тут вдруг надо что-то сохранять).
В Adobe бредово сделана история в том плане, что Ctrl+Z по-умолчанию отменяет только один шаг истории, а второе нажатие возвращает его обратно. Ничего меня так не выбешивало в их продуктах, как это.
Так что да, сохранять всё, что меняет результат, пропускать всё, что не меняет. Хранить как можно больше истории. Если выходной файл получается маленький по размеру - то всю историю правок можно вообще в этот файл и закатать, чтобы пользователь при повторном открытии ошарашенно-радостно заметил, что всё хранится и ничто не забыто.
Эксель ведёт себя разумно в этом разрезе: история не засоряется переключением вкладок и выделением ячеек, но сохранять можно сколько угодно - и эти изменения успешно записываются. Так что изменения, не модифицирующие контент, просто не отображать в истории, позволять сохранять, но не требовать этого (как ворд при печати). Это логично и удобно.
Вопрос: а что собственно записывается в историю? Только команда, или соответсрвующее ей состояние файла? То есть Undo вызывает загрузку предыдущего состояния файла, или выполнение команды, "обратной" последней?
Зависит от ситуации. В тех случаях, когда можно совершить обратную команду, мы записываем команду. Если это невозможно (например, пользователь удалил всё содержимое файла. Какая команда будет обратной?), то сохраняем состояние.
В некоторых программах сохраняют так называемый "инкремент", то есть изменение, произведённое в содержимом. Но не с любым содержимым это удаётся.
Тогда в ситуации, когда обратная команда существует (хотя бы логически), я бы писал ее в историю, даже если файл не меняется. Потому что может быть полезно просто для того, чтобы вспомнить последовательность операций, которую, например, захотелось повторить на другом материале. А когда не существует, и файл не изменился, то не писать. Но в любом случае меню сохранения файла пусть лучше всегда работает, даже если файл с прошлого сохранения не изменился.
А, ну тут вы хотите использовать кусок истории в качестве макроса, а это не совсем корректно, хотя и история и макрос состоят из одних и тех же команд. В случае если мы предоставим возможность копировать историю в макрос, то, вероятно, нам придётся записывать в историю даже операции-пустышки, поскольку, как вы совершенно справедливо заметили, в какой-то ситуации они будут пустышками, а какой-то другой -- могут что-то и выполнить.
Но, полагаю, что в любом случае копирование из истории в макросы не должно быть бездумным. Впрочем, разберёмся с этим, когда дойдём до макросов :)
Как мне представляется: история бесконечная (с момента создания файла), причём в обе стороны - undo/redo, доступно восстановление состояния документа в любой точке, а не только пошагово (Photoshop) хранить только то, что привело к реальному изменению самое главное: история записывается в рабочий файл с тем, что бы можно было бы восстановить все действия с сохранённым файлом после закрытия программы, перезагрузки, на другом компьютере и т.д.
Хорошая штука. Можно сделать. Только это получается совершенно альтернативный способ хранения файла. Переход от одного способа к другому может получиться не слишком элегантным. Ладно, посмотрим :)
Comments 10
В Adobe бредово сделана история в том плане, что Ctrl+Z по-умолчанию отменяет только один шаг истории, а второе нажатие возвращает его обратно. Ничего меня так не выбешивало в их продуктах, как это.
Так что да, сохранять всё, что меняет результат, пропускать всё, что не меняет. Хранить как можно больше истории. Если выходной файл получается маленький по размеру - то всю историю правок можно вообще в этот файл и закатать, чтобы пользователь при повторном открытии ошарашенно-радостно заметил, что всё хранится и ничто не забыто.
Как-то так.
Reply
Reply
Reply
(The comment has been removed)
Reply
Reply
В тех случаях, когда можно совершить обратную команду, мы записываем команду. Если это невозможно (например, пользователь удалил всё содержимое файла. Какая команда будет обратной?), то сохраняем состояние.
В некоторых программах сохраняют так называемый "инкремент", то есть изменение, произведённое в содержимом. Но не с любым содержимым это удаётся.
Reply
Но в любом случае меню сохранения файла пусть лучше всегда работает, даже если файл с прошлого сохранения не изменился.
Reply
Но, полагаю, что в любом случае копирование из истории в макросы не должно быть бездумным. Впрочем, разберёмся с этим, когда дойдём до макросов :)
Reply
история бесконечная (с момента создания файла), причём в обе стороны - undo/redo, доступно восстановление состояния документа в любой точке, а не только пошагово (Photoshop)
хранить только то, что привело к реальному изменению
самое главное: история записывается в рабочий файл с тем, что бы можно было бы восстановить все действия с сохранённым файлом после закрытия программы, перезагрузки, на другом компьютере и т.д.
Reply
Только это получается совершенно альтернативный способ хранения файла. Переход от одного способа к другому может получиться не слишком элегантным. Ладно, посмотрим :)
Reply
Leave a comment