дизайн, principles, Quality Without A Name |
[Nov. 3rd, 2007|11:44 pm] |
Про качество "Quality Without A Name" (термин ввел очень известный как в архитектурных, так и в программерских кругах архитектор Кристофер Александр), о котором пишет известный программист Стив Йегге в блог-статье "The Pinoccio problem". Он говорит, что это безымянное качество присуще всем "хорошо спроектированным" ("well-designed") системам, и приводит в пример редактор Emacs *. Я же замечал проявления этого самого "абстрактного и неформулируемого" принципа и в редакторе Vim, например, в том, что команда :%s//NewValue/g заменит на "NewValue" содержимое регистра "/" **. И таким же образом будут вести себя команды :g//t$ *** , :g//d **** и т.п. Мне кажется, что это признак очень правильного дизайна системы, когда она делает именно то, что я имею в виду, даже в том случае, когда я еще точно не знаю, как именно корректно сформулировать свое требование, и даю инструкцию, руководствуясь не документацией, а своим собственным представлением о том, как должна выглядеть команда, которая делает то, что я хочу.
* Цитата из Стива Йегге:
People have observed that Emacs has ... Quality Witout A Name ... : a nice, organic, comfortable rightness that fits like a pair of old jeans, or a snug warm chair in a library by a fire.
Красиво излагает, однако.
** Регистр, обозначаемый "/" в редакторе Vim хранит содержимое последнего поиска. Команда "s" означает "substitute", и предназначена для замены, грубо говоря, одного слова на другое. Ее синтаксис и семантика примерно такова: инструкция :s/OldWord/NewWord/ значит "заменить вхождения OldWord на NewWord". Если дать команду s с пропущенным аргументом OldWord (она будет иметь вид :s//NewWord/) , то в качестве OldWord редактор Vim будет использовать содержимое последнего поиска. Это, на мой взгляд, очень удобно, и к такому поведению привыкаешь моментально.
*** :g//t$ - Скопировать строки, содержащие вхождение регистра "/", в конец файла.
**** :g//d - Удалить строки, содержащие вхождение регистра "/". |
|
|