23 Что не должна делать программа

      Комментарии к записи 23 Что не должна делать программа отключены

Главная Форумы Программирование Программирование на С++ Заметки о С++ 23 Что не должна делать программа

Помечено: ,

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 2 мес., 3 нед. назад.

  • Автор
    Сообщения
  • #3601

    Кеширование ошибки

    Кеширование придумано для удобства, а не для головной боли. Программист, кеширующий ошибку, напоминает мне персонажа басни «Мартышка и очки». Кеширование создано для того, чтобы сократить время выполнения одной и той же функциональности. Это имеет смысл, когда эта функциональность действительно выполняется многократно. Если пользователь постоянно вызывает одну и ту же функциональность, результатом которой является ошибка, то делает он это не от хорошей жизни. Скорее всего он пытается устранить ошибку, меняя какие-то внешние параметры каждый раз перед вызовом этой функциональности.

    Доблестные обезьяны из корпорации Microsoft реализовали кеширование результата функции gethostbyname, причем не зависимо от ее результата. Когда я ждал активации HTTP-доступа на своем сайте, после каждой неудачной попытки зайти на сайт через броузер мне приходилось отключаться от Интернета и подключаться заново, чтобы функция gethostbyname сбрасывала свой кеш.

    Ошибки не должны кешироваться, потому что пользователь ожидает валидного результата. Валидность данных несоизмеримо важнее производительности.

    Мания величия

    Программа не должна без спроса вносить какие-либо изменения в поведение системы, если эти изменения отбирают какие-то полномочия у уже установленных программ-конкуретнов. Например, сейчас на многих клавиатурах есть кнопка «Media», по нажатию которой запускается мультимедиа-проигрыватель по умолчанию. Если у вас уже установлен Winamp (проявивший порядочность, спросив при установке с какими типами файлов его нужно ассоциировать), то после запуска программы BSPlayer вы даже и не подумаете, что последний уже присвоил кнопку «Media» себе. Порядочность Winamp-а, однако, заканчивается вместе с его установкой. Он точно также будет без спроса отбирать кнопку «Media» себе после каждого запуска.

    Не меньшим идиотизмом отличаются программы и их создатели, не предоставляющие галочки «Больше не спрашивать об этом». Предположим, у меня есть две программы, «A» и «B», работающие с одними и теми же файлами. Если я каждый день запускаю сто раз программу «A» и десять раз программу «B», то зачем программа «B» каждый раз меня спрашивает, не хочу ли я сделать ее программой для этих файлов по умолчанию?

    Программа не должна без спроса залезать в автозагрузку. С чего вы взяли, уважаемые создатели подобного софта, что загрузка вашей программы вместе с операционной системой — очевидная необходимость? С таким подходом вам лучше торговать носками в электропоездах.

    Конкуренция между создателями в первую очередь не должна доставлять неудобств пользователю. Если программа действительно хороша, то никакие трюки ей не понадобятся. Если же программа — говно, то никакие обманные маневры ей не помогут.

    После нас — хоть потоп

    Во-первых, программа обязана предоставить кнопку «Uninstall» там же, где и находится кнопка для ее запуска. Например, как я уже говорил ранее, Microsoft Visual Studio 8.0 вообще не предоставляет кнопки «Uninstall». Да, Visual Studio — прекрасная среда разработки, но зачем же вконец борзеть? Во-вторых, после удаления, программа обязана откатить за собой все изменения в системе, которые она внесла во время установки. Программисты, чьи программы не удаляют за собой файлы, или же оставляют какое-то дерьмо в реестре, подобны людям, которые не моют руки после посещения туалета.

    Конечно, я прекрасно понимаю, что производители программного обеспечения хотят защититься от умельцев, решающих проблему Trial-периода путем удаления и повторной установки программы. Поэтому они «помечают» компьютер как машину, на которой они уже были. Подобным образом кошки и собаки помечают свою территорию. Объяснение здесь простое: «Извините, нам надо зарабатывать деньги, поэтому мы будем гадить на вашем компьютере».

    Спасибо вам, уважаемые дебилы и дебилята. Именно благодаря вам появляются такие анекдоты как «Переустановка Windows подобна разморозке холодильника — помогает, но ненадолго».

    Умнее пользователя

    Какой бы навороченной функциональностью не обладала программа, чтобы она не умела делать, она все равно должна оставаться лишь безмозглой служанкой, ни в какой ситуации не претендующей на то, чтобы быть умнее пользователя.

    Почему Internet Explorer и Mozilla Firefox, в отличие от Opera, считают, что мне незачем знать URL загружаемой страницы, до тех пор, пока эта страница не загрузится? Вдруг это какой-нибудь вирус-шутник через функцию ShellExecute отправил меня на какой-нибудь «плохой» сайт? Почему я должен это обнаружить только после того, как это «в мире животных» будет загружено до последней картинки?

    Почему девяносто девять процентов всех программ (в том числе — все существующие броузеры) считают, что временные файлы нужно хранить в такой глубокой заднице и в таком неузнаваемом виде, чтобы ими никто кроме этой программы не мог воспользоваться? Если программа решила подмять под себя часть винчестера, то пусть будет добра использовать присвоенное место так, чтобы от него была польза не только для нее самой. Почему почти никто не хранит временные файлы в нормальном структурированном виде? Почему мне приходится заниматься детективным расследованием, если я просто хочу сохранить на винт только что просмотренный в Интернете ролик?

    Апдейты

    Апдейты это вообще — отдельная песня. Значительная часть программ апдейтятся через Интернет вообще без какого-либо спроса. Я конечно понимаю, web-based идеология, всеобщая информационная централизация, прочее хуе-мое, однако для пользователя должно быть предельно ясно, что и откуда берется на его компьютере. Первое место за самую идиотскую политику апдейта по умолчанию я бы отдал Mozilla Firefox: «Обновление было удачно скачано. Хотите установить его сейчас?». При этом меня даже никто не спросил, а хочу ли я вообще что-то там скачивать. Ну хорошо, стерпел. Нажал «нет». «Хорошо, тогда я установлю обновление при следующем запуске программы». И единственная кнопочка «OK». Просто нет слов. Вот что бывает, когда обезьянам доверяют клавиатуру.

Для ответа в этой теме необходимо авторизоваться.