Пять копеек в шляпу идеального софтостроения

Один из законов программостроения гласит: идеальная программа никогда не будет дописана. Это, наверное, правда — часто вам в руки попадались идеальные программы? Вот и мне тоже. Но никто не мешает нам заняться не самым глупым на свете делом и попробовать сформулировать — а какой должна быть почти идеальная программа для решения такой-то и такой-то задачи.

Задачу возьмем самую простую: руль для CD-привода. Утилита, которая позволяет двигать лотком туда-сюда, не убирая рук от органов ввода данных. Таких утилит в природе с избытком, но вот лично мне ни одна не понравилась настолько, чтобы прижиться в моей системе.

Итак. Пункт номер раз, функционал. Требуется: уметь работать с любым количеством приводов, сколько бы их ни было; уметь открывать и закрывать каждый из них в отдельности; открывать привод перед завершением работы, если внутри остался диск (опционально); закрывать лоток после N секунд простоя в открытом виде (тоже опционально); собственно, и все. Функцию ограничения скорости оставим для версии 2.0 — должен ведь быть какой-то потенциал для развития, верно?

Пункт номер два, эргономика. Для каждого из приводов в systray должна отображаться своя собственная иконка (при желании пользователь может указать, для какого привода иконку вывести, а какой обойдется). Иконка должна максимально доступно показывать а) букву, под которой привод значится в системе, и б) текущее состояние (открыт/закрыт). В качестве иконки вполне подойдет стилизованный CD, очень четкий и контрастный, с буквой поверх него. Для текущего состояния хватит банального цветового кодирования — серенький диск, допустим, означает «закрыто», а красненький (но глаза чтоб не резал) означает «открыто». Одиночный левый клик на иконке приводит к действию, и действие одно-единственное — поменять текущее состояние лотка. То есть открыть, если был закрыт, и наоборот. Одиночный правый клик на иконке — обычное меню, открыть/закрыть-параметры-выход. Параметры, понятно, у каждого привода свои собственные (в том числе hotkey).

Просто? Проще не бывает. Но попробуйте найти грамотную реализацию этого простого. Я покамест найти не смог, и приз зрительских симпатий остается бесхозным. Но поиски не прошли бездарно, и в номинации «левая резьба поперек гайки» появился более чем достойный кандидат. Вот он — OCCD v2.0 Universal (найти на SoftSearch, скачать у автора). Этот ослепительный венец софтверного творения не нуждается в представлениях, аннотациях и пересказах своими словами. Достаточно процитировать прилагаемое к пакету описание (текст авторский, исправлена только орфография):

Программа представляет собой набор из нескольких легких, не требующих инсталляции программ, каждая из которых отвечает за открытие и/или закрытие конкретного привода соответствующего буквам, определяемым пользователем. А именно: D, E, F, G, H, J, K, L, M, N. После извлечения данных программ, удалите те, ярлыки и названия которых НЕ являются буквами Ваших дисков. Для возможности помещения программы в панель меню Пуск, переместите с помощью курсора нужную Вам букву в панель Пуск при нажатой клавише Ctrl. После чего можно удалить программу с десктопа.

Интересно, а что будет делать тот пользователь, которого чёрт дернул повесить CD-ROM на букву "I"? Зачахнет с тоски, не иначе.

И это никакая не шутка, вот — на скриншоте все нарисовано. Работает чудо пытливой программерской мысли следующим образом: для открывания лотка привода под буквой «E» нужно запустить E.exe, лоток откроется, а программа порадует пользователя вопросом, нужно ли закрыть обратно (ответить можно только «OK», т.е. вопрос насквозь риторический — кто бы сомневался). Есть, правда, и странности: в частности, не очень понятна судьба буквы «I», которая почему-то в пакет не вошла. В процессе тестирования возник и другой вопрос — отчего мой привод, который у меня повешен на букву «E», утилитой E.exe можно только открыть, а закрыть обратно можно только утилитой F.exe? Видимо, пакет еще не был оптимизирован под Windows 2003 Server и стоит подождать следующей версии.

Ну вот скажите мне, откуда берутся такие чудеса в решете? Такое впечатление, что автор свою идею выпиливал лобзиком из консервной банки. А последний и решающий удар по остаткам веры в человечество наносит лицензионное соглашение:

Вы должны были получить копию Универсальной Общественной Лицензии GNU вместе с этой программой; если нет, напишите в Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.

Нокаут. Загробные рыдания и через семь гробов в центр мирового равновесия. Уж лучше я буду думать, что это была чья-то удачная шутка, чем поверю в существование такого программостроения.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...

Дата публикации:
Автор публикации: