metaclass: (Default)
[personal profile] metaclass
В процессе срачей с айседом пришел к выводу, что искать идеальные софты/либы/платформы бесполезно, практически все, что хоть как-то используется - достаточно пригодно для использования. Лучше выделить критерии для того, что использовать нежелательно:

С точки зрения пользователя:
1) Отличие от общепринятых UI гайдлайнов. Например, розовый фон, красные кнопки, шрифт Comic Sans и выход из программы по кнопке F1.
2) Неадекватное поведение по отношению к другим программам и ОС. Например, встраивание хуков на системные действия или расширений в Explorer.
3) Издевательства над обычными средствами пользовательской интеграции - например, невозможность без вуду скопировать текст из программы в клипбоард, стандартным сочетанием кнопок или меню.
4) Наличие тупиков в Workflow, т.е. возможность обычными действиями зайти в программе туда, откуда обычными действиями уже не выйдешь (только снимать программу из диспетчера задач, kill и прочая)
5) Отсутствие прогресс-баров и прочей индикации выполнения при длительных операциях, отсутствие возможности их корректно прервать.

С точки зрения админства-деплоймента:
1) Неумение работать в многопользовательской среде/на терминальном сервере.
2) Неумение переживать xcopy-деплоймент и запускаться на чистой машине. В крайнем случае - должно быть документировано, что из окружения требуется (.net, жаба, переменные окружения)
3) Хардкодед пути в бинарниках - убивать нещадно.
4) Размещение своих либ/данных в общих папках, типа system32. Под линуксом - не считается, там за это пакетный менеджер, в идеале, отвечает и там принято всему софту гадить единообразно.

С точки зрения программизма:
0) ad-hoc программирование, без проектирования. Практически сразу заметно по структуре api.
1) Хардкодед значения, не являющиеся математическими константами. Пытать на дыбе авторов. Сюда же - хардкодед пути типа C:/Program Files или C:/openssl/etc (портированный софт
2) Тот же контекст, но в пределах ВСЕЙ ОС, а не только запущенного бинарника (Dragon Naturally Speaking и его апи - сука, ненавижу).
3) Не реентерабельные функции.
4) Отсутствие в АПИ для работы с внешними ресурсами явных пар типа Open/Close, Enter/Exit.
5) Невидимый/недокументированный/мутабельный глобальный контекст. Сюда же - использование такого контекста для работы с внешними ресурсами. Т.е. Open не возвращает "хендл для работы с ресурсом", а просто открывает где-то внутри его и все последующие функции его используют, неявно. Например, коннект к БД - один на всю программу. Или транзакция - одна на весь коннект к БД.
6) Отсутствие для значений getter там где присутствует setter. Забивать гвозди в голову за такое. Т.е. мы можем установить некий параметр, но не можем узнать его значение.
7) Случайное поведение API, не объяснимое переданными параметрами и документированным окружением. Обычно - следствие пункта 5 и общего рукожопия.
8) Использование GUI в явно не-гуишных либах. Последний пример - библиотека для работы с одной железякой, кидающая диалоговое окно при ошибке драйвера. Если ее использовать в фоновом сервисе - капец от входа.
9) Отсутствие в API возможности показать прогресс и прервать длительно выполняющиеся операции.
10) Отсутствие обработки ошибок вообще. УБИВАТЬ! УБИВАТЬ! УБИВАТЬ!
11) Обработка ошибок нормального workflow исключениями. Т.е. "попытка подключится к отсутствующему серверу" кидает исключение, хотя должна быть операция TryConnect
Хуже этого - только парсинг строк в простые значения без функции TryParse
12) Отсутствие логгинга. Сажать на кол, конечно же.
13) Отсутствие исходников - когда вышеописанное вылезет в полной мере, а автор окажется живущим половой жизнью с ежихой в ашраме Гуру Бхактиведанты Свами Прабхувады Ребе Короля Мошиаха - вам придется чинить либу самому.
За вас никто ничего чинить не будет - инфа 100%, еще ни одной либы не видел, где автор бы починил самоочевидную ошибку ранее чем через месяц после баг-репорта.

Т.е., если вы проектируете API - лучше сразу думайте, как его можно однозначно завернуть в красивый класс на c# или сделать обертку для него на хаскеле функциональном языке - резко становится очевидно, что можно делать и чего нельзя.

PS от [livejournal.com profile] denisioru:
- невозможность запустить несколько инстансов софтины одновременно. Да, год 2012й. Лом в жопу.
- изобретение собственных IP-протоколов. Прикладной софт должен работать по UDP или TCP. В редких очевидных случаях - RTMP и иже с ними. Люто, бешено лоботомировать.
- использоать API ОС для ресолвинга имён. За формирование руками DNS запросов и отправку их в неизвестном направлении - насылать нещадный кровавый понос.
- использование нестандартных диалогов открытия и сохранения файлов. Как наказание - выдать блок питания к ноуту юзера, несовместимый с розетками в офисе и дома.
- глюки на мультимониторных конфигурациях. За появление главного окна софтины, напополам распиленное между десктопами - выкалывать глаза.
- создание и использование временных файлов ВНЕ системного каталога TEMP - отправлять сортировать мусорные баки.

PS от [livejournal.com profile] belnetmon:
- невозможность запустить софтину под уровнем пользователя , отличного от админа
- невозможность работы с UNC путями
- гадить во временную папку, которую пидор создал в корне системного диска (NVidia, Intel - привет)

Date: 2012-06-02 09:15 am (UTC)
From: [identity profile] falcrum.livejournal.com
Не так давно общался как раз с похожим чем-то: сторонняя либа, некая документация есть, заявлена потокобезопасность. Агащазблин! Пришлось методом тыка находить "узкие места" и "разводить" их извне. Седых волос на яйцах добавило.

Date: 2012-06-02 09:31 am (UTC)
From: [identity profile] vp.livejournal.com
Это вообще у тебя получился всеобъемлющий пост, универсальный на все случаи жизни :) Хоть ты его в рамку вставляй.

Date: 2012-06-02 09:32 am (UTC)
From: [identity profile] theiced.livejournal.com
>1) Отличие от общепринятых UI гайдлайнов. Например, розовый фон, красные кнопки, шрифт Comic Sans и выход из программы по кнопке F1.

зачем ви так ненавидите каснерика?

Date: 2012-06-02 09:38 am (UTC)
From: [identity profile] metaclass.livejournal.com
GIS это отдельная история, то что его ситиинфа вообще юзабельна - это можно памятник ставить при жизни. Обычно такой софт использовать невозможно.

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-06-02 09:39 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 09:55 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-11 09:06 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] nivanych.livejournal.com - Date: 2012-06-03 06:25 am (UTC) - Expand
(deleted comment)

Date: 2012-06-02 10:09 am (UTC)
From: [identity profile] theiced.livejournal.com
дотнетовцам аннулировать?

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 10:26 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 12:43 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 04:48 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 06:28 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 10:38 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-03 06:49 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-06-03 08:25 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-03 06:11 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 08:43 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 09:59 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 11:27 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 12:24 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 01:15 pm (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 01:34 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 02:33 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-04 03:12 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-05 08:27 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-05 08:50 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 12:07 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2012-06-04 10:00 pm (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-05 07:56 am (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2012-06-05 09:05 pm (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-06 06:54 am (UTC) - Expand

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2012-06-02 10:34 am (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2012-06-02 12:35 pm (UTC) - Expand
(deleted comment)

(no subject)

From: [identity profile] sergiej.livejournal.com - Date: 2012-06-02 01:32 pm (UTC) - Expand

(no subject)

From: [identity profile] v-l-a-d.livejournal.com - Date: 2012-06-05 11:42 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-05 11:48 am (UTC) - Expand

(no subject)

From: [identity profile] v-l-a-d.livejournal.com - Date: 2012-06-05 11:54 am (UTC) - Expand

Date: 2012-06-02 10:20 am (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Отлично изложено. Призывы к еасилию с адрес социвльной глруппы тупых программистов.

Date: 2012-06-03 06:28 am (UTC)
From: [identity profile] nivanych.livejournal.com
У них такой статьи в уголовном кодексе и нет, поди!
Не то, что у нас!

Date: 2012-06-02 10:33 am (UTC)
From: [identity profile] serbod.livejournal.com
Еще добавлю, что должна быть документация, хотя бы в виде комментов в коде, где названий переменных и функций недостаточно для понимания всех тонкостей. Принцип "лучшая документация - сам код" уже много раз приводил к неоправданным потерям времени и денег.

Date: 2012-06-02 10:35 am (UTC)
From: [personal profile] ex0_planet
Насчет тупиков в workflow - ни разу не видел, можно подробнее? Видел похожее: модальный диалог "ошибка соединения" с кнопкой ок, при этом через полсекунды операция повторяется, а остановить workflow можно только по кнопке стоп в главном меню. Это оно?

Date: 2012-06-02 10:50 am (UTC)
From: [identity profile] metaclass.livejournal.com
Типа такого, да.
Или когда открыл какое-то окно, но выйти можно только нажав OK, что вызовет побочный эффект сохранения изменений. Т.е. формально это не тупик, но выйти из него можно только через потенциально деструктивные действия.

(no subject)

From: [personal profile] ex0_planet - Date: 2012-06-02 10:56 am (UTC) - Expand

Date: 2012-06-02 10:53 am (UTC)
From: [personal profile] ex0_planet
Пункт 4 (admin) под линуксом еще как считается. В /usr/lib положено складывать либы "общего пользования", для приватных нормальные люди делают /usr/lib/программа/запчасти.so.

Date: 2012-06-02 11:28 am (UTC)
From: [identity profile] serbod.livejournal.com
Последнее время для сборки старо-зависимых прог использую отдельные ./usr, со своими шлюхами и блекджеком. Просто ./configure --prefix=/usr/local/proga - туда потом все говно (бинарники, заголовки, либы, маны, конфиги) сваливается.

А раскладывать говно по полочкам - задолбаешься потом его вычищать.

(no subject)

From: [personal profile] ex0_planet - Date: 2012-06-02 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 11:46 am (UTC) - Expand

(no subject)

From: [personal profile] ex0_planet - Date: 2012-06-02 11:56 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 12:10 pm (UTC) - Expand

(no subject)

From: [personal profile] ex0_planet - Date: 2012-06-02 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] serbod.livejournal.com - Date: 2012-06-02 11:54 am (UTC) - Expand

Date: 2012-06-02 11:11 am (UTC)
From: [identity profile] guamoka.livejournal.com
0) ad-hoc программирование, без проектирования. Практически сразу заметно по структуре api.

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

Date: 2012-06-02 02:27 pm (UTC)
netch: (Default)
From: [personal profile] netch
ad hoc вообще-то нормальная ситуация в принципиально новой тематике - там можно любых дров наломать. Но нужно потом не держаться за созданную структуру как за священный грааль, а уметь переделывать (если хочется красивых слов и плавных методов - то рефакторить).

(no subject)

From: [identity profile] guamoka.livejournal.com - Date: 2012-06-02 02:43 pm (UTC) - Expand

(no subject)

From: [personal profile] netch - Date: 2012-06-02 05:19 pm (UTC) - Expand

Date: 2012-06-02 11:17 am (UTC)
From: [identity profile] guamoka.livejournal.com
5) Невидимый/недокументированный/мутабельный глобальный контекст.

О, я вам расскажу еще за интерсепторы. Значит, прилетает в наше ОПИ некий идентификатор, согласно сигнатуре типа #уй, но интерсептор, который надо ручками прописывать в виде аннотации (и не дай бог забудешь) к каждому нужному методу, кроме прочих шаманских ритуалов, берет этот идентификатор, превращает его в палец и сует в ту же переменную, называющуюся #уй, и в результате в теле метода мы имеем в переменной #уй уже палец:-) Экая архитектурная сила мысли!

Date: 2012-06-02 11:26 am (UTC)
From: [identity profile] denisioru.livejournal.com
- невозможность запустить несколько инстансов софтины одновременно. Да, год 2012й. Лом в жопу.
- изобретение собственных IP-протоколов. Прикладной софт должен работать по UDP или TCP. В редких очевидных случаях - RTMP и иже с ними. Люто, бешено лоботомировать.
- использоать API ОС для ресолвинга имён. За формирование руками DNS запросов и отправку их в неизвестном направлении - насылать нещадный кровавый понос.
- использование нестандартных диалогов открытия и сохранения файлов. Как наказание - выдать блок питания к ноуту юзера, несовместимый с розетками в офисе и дома.
- глюки на мультимониторных конфигурациях. За появление главного окна софтины, напополам распиленное между десктопами - выкалывать глаза.
- создание и использование временных файлов ВНЕ системного каталога TEMP - отправлять сортировать мусорные баки.

Date: 2012-06-02 11:31 am (UTC)
From: [identity profile] vp.livejournal.com
по поводу нескольких инстансов - в идеале, это должно конфигурироваться. Может быть нужен только один инстанс. а может быть - несколько. Дурные тетки иногда в припадке ненависти могут запустить 100500 копий приложения и радоваться.

Про ручные ДНС запросы - класс. Никогда такого не видел :)
А зачем вообще резолвить что-то руками? Это ж системное дело, адрес этот хост или имя.. На прикладном уровне вообще об этом не надо думать.

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

А вот по последнему пункту - уточните. "Системный каталог" у вас - это что?

(no subject)

From: [identity profile] tzirechnoy.livejournal.com - Date: 2012-06-02 11:49 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 11:51 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 12:03 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 12:21 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-02 12:07 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 12:19 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 12:30 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 12:50 pm (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 12:54 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-02 01:10 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 01:19 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 11:54 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-02 12:05 pm (UTC) - Expand

(no subject)

From: [identity profile] guamoka.livejournal.com - Date: 2012-06-02 02:45 pm (UTC) - Expand

(no subject)

From: [identity profile] familom.livejournal.com - Date: 2012-06-02 03:25 pm (UTC) - Expand

(no subject)

From: [personal profile] netch - Date: 2012-06-02 02:29 pm (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-02 03:38 pm (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 02:49 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-04 03:35 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 03:55 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 04:15 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-04 04:47 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 04:00 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 04:07 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 04:14 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 04:21 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-04 04:45 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 04:52 am (UTC) - Expand

(no subject)

From: [identity profile] denisioru.livejournal.com - Date: 2012-06-04 04:55 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 06:34 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-04 06:54 am (UTC) - Expand

(no subject)

From: [identity profile] berezovsky.livejournal.com - Date: 2012-06-04 07:52 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 06:37 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-04 07:45 am (UTC) - Expand

(no subject)

From: [identity profile] fraks-nsk.livejournal.com - Date: 2012-06-04 08:32 am (UTC) - Expand

(no subject)

From: [identity profile] vp.livejournal.com - Date: 2012-06-04 07:44 am (UTC) - Expand

(no subject)

From: [identity profile] mfi.livejournal.com - Date: 2012-06-13 04:20 pm (UTC) - Expand

Date: 2012-06-02 11:33 am (UTC)
From: [identity profile] vp.livejournal.com
Добавлю:

- невозможность запустить софтину под уровнем пользователя , отличного от админа
- невозможность работы с UNC путями
- гадить во временную папку, которую пидор создал в корне системного диска (NVidia, Intel - привет)

Date: 2012-06-02 11:57 am (UTC)
From: [identity profile] j-sheridan.livejournal.com
яростно плюсую over9k первый пункт!

(no subject)

From: [identity profile] dnnx.livejournal.com - Date: 2012-06-04 07:45 pm (UTC) - Expand

(no subject)

From: [identity profile] mastroombroj.blogspot.com - Date: 2012-06-02 08:11 pm (UTC) - Expand

Date: 2012-06-02 11:47 am (UTC)
From: [identity profile] j-sheridan.livejournal.com
Ребе, я взял на себя смелость и перепостил это туда (http://www.rsdn.ru/forum/flame.comp/4762758.1.aspx)
Срач возможен знатный ))

Date: 2012-06-02 12:04 pm (UTC)
From: [identity profile] vp.livejournal.com
вы туда еще дополнения запостите, которые другие ребе добавили :)

(no subject)

From: [identity profile] j-sheridan.livejournal.com - Date: 2012-06-02 02:29 pm (UTC) - Expand

(no subject)

From: [identity profile] j-sheridan.livejournal.com - Date: 2012-06-02 03:52 pm (UTC) - Expand
From: [identity profile] livejournal.livejournal.com
User [livejournal.com profile] molnij referenced to your post from Анти-критерии для софта и апи (http://molnij.livejournal.com/315520.html) saying: [...] Оригинал взят у в Анти-критерии для софта и апи [...]

Date: 2012-06-02 01:21 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
- Наличие в одной директории исходников с одинаковыми именами, различающимися лишь по регистру
- Использование символов с кодами больше 127 в именах файлов внутри неюникодных контейнеров (.zip, ...)
- Библиотеки локального назначения, шарящие по глобальным ресурсам машины (дырявая libxml и иже с ней)

Date: 2012-06-04 10:43 am (UTC)
From: [identity profile] sbj-ss.livejournal.com
Хмых. А libxml2-то чем провинилась? Благополучно юзается под виндой много лет.
Там единственное, что плохо - совершенно рукожопная работа с HTTP, один способ указания прокси чего стоит. С год назад отправлена в АдЪ и Израиль, где Жыды, и заменена (sic!) на WinHTTP.

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2012-06-04 11:05 am (UTC) - Expand

Date: 2012-06-02 01:35 pm (UTC)
From: [identity profile] nonameshadow.livejournal.com
Про UNC-пути люто плюсую, особливо, кода софтина многопользовальская!!!

Ну и до кучи - создание многопользовательских софтин с локом на файлы.Очень чудесно, кода клиент у кого завис, а еще 100500 полчают отлуп, потому как файл конфига общий на чтение залочен. Ну и да, хранение конфигов клиентских в местах, отличных от пользовательских папок, для того и предназначеных.

Date: 2012-06-02 02:06 pm (UTC)
From: [identity profile] d4s.livejournal.com
ребе, а вот я не помню спрашивал я у вас или нет: а читали ли вы "Искусство программирования в UNIX" Реймонда?
а то ваш пост мне почему-то коррелирует с этой книжкой ;-) Впрочем, как и часть комментов по существу.

Date: 2012-06-02 02:42 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Еще не добрался, лежит тут в очереди на прочтение.

(no subject)

From: [identity profile] d4s.livejournal.com - Date: 2012-06-02 02:55 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-06-02 03:09 pm (UTC) - Expand

(no subject)

From: [identity profile] d4s.livejournal.com - Date: 2012-06-02 03:31 pm (UTC) - Expand

(no subject)

From: [identity profile] ihar hrachyshka - Date: 2012-06-02 05:23 pm (UTC) - Expand

Date: 2012-06-03 12:10 am (UTC)
From: [identity profile] sbinq.livejournal.com
> 11) Обработка ошибок нормального workflow исключениями. Т.е. "попытка подключится к отсутствующему серверу" кидает исключение, хотя должна быть операция TryConnect ...

А можете пояснить, чем вам не нравится просто метод Connect(..) бросающий Exception вида CannotConnectToMyCoolServer? Совсем не вижу что в этом плохого.

Date: 2012-06-03 05:13 am (UTC)
From: [identity profile] metaclass.livejournal.com
Тем, что ошибка подключения к серверу - это в некоторых случаях нормальная ситуация.
И это исключение приходится перехватывать практически всегда и переводить на нормальный язык для пользователя.

(no subject)

From: [identity profile] sbinq.livejournal.com - Date: 2012-06-03 10:32 pm (UTC) - Expand

(no subject)

From: [identity profile] zmila.livejournal.com - Date: 2012-06-04 09:45 am (UTC) - Expand

(no subject)

From: [identity profile] creatorcray.myopenid.com - Date: 2012-06-03 08:41 pm (UTC) - Expand

(no subject)

From: [identity profile] sbinq.livejournal.com - Date: 2012-06-03 10:20 pm (UTC) - Expand

Date: 2012-06-03 02:42 pm (UTC)
From: [identity profile] n0way.livejournal.com
"2) Неадекватное поведение по отношению к другим программам и ОС. Например, встраивание хуков на системные действия"

подразумевается что всегда есть альтернатива? это не так.

Date: 2012-06-04 09:16 am (UTC)
From: [identity profile] levgem.livejournal.com
а вот я в рот ебал виндовые слеши и никогда не буду планировать софт под их использование. И очень этим доволен.

Date: 2012-06-04 09:32 am (UTC)
From: [identity profile] metaclass.livejournal.com
Во всех нормальных кроссплатформенных инструментах есть PathSeparator и Path.Combine

(no subject)

From: [identity profile] justy-tylor.livejournal.com - Date: 2012-06-04 11:56 am (UTC) - Expand

No title

Date: 2012-06-04 12:07 pm (UTC)
From: [identity profile] livejournal.livejournal.com
User [livejournal.com profile] arbinada referenced to your post from No title (http://arbinada.livejournal.com/466024.html) saying: [...] О софтопроектировании http://metaclass.livejournal.com/695560.html?thread=12443656#t12443656 [...]

Date: 2012-06-10 07:43 pm (UTC)
From: (Anonymous)
> использование нестандартных диалогов открытия и сохранения файлов

Несколько спорный пункт. Виндовые диалоги - это если не маразм, то дебилизм - точно. Пример на винде-7: КАЖДЫЙ раз, когда нужно что-то сохранить, эта тварь мне суёт Desktop/Libraries/Documents - дура штоле?! У меня ДВА места для сохранения - C: и D:! Которые конечно видны в дереве слева, но они... СПРЯТАНЫ! И "колесо прокрутки" там не пашет без фокуса! Там же сидит "сидиром", на который в здравом уме никто писать не будет, но тем не менее он стоит.
Короче, мудак, проектировавший эти диалоги заслуживает всех вышеперечисленных наказаний.

Date: 2012-06-11 04:30 pm (UTC)
From: [identity profile] ko-bx.livejournal.com
Интересно, почему ни слова про тесты.

Date: 2012-06-11 04:42 pm (UTC)
From: [identity profile] ko-bx.livejournal.com
то есть, если полностью:

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

Date: 2012-06-13 03:44 pm (UTC)
From: [identity profile] mar-shim.livejournal.com
"невозможность запустить софтину под уровнем пользователя , отличного от админа" - а вот как раз бывает на вполне пользовательских программах, якобы защита от пиратства (WTF?)

Date: 2012-06-13 04:18 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Долбятся во внутренности биоса-железа, ставят свои драйвера. Скорее всего, последний пункт. Ну и если по хорошему, даже если такое делать, то это однократный запуск под админом, дальше будет работать и под юзером.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 29th, 2025 10:07 pm
Powered by Dreamwidth Studios