2009-04-13 2 views
11

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

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

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

Любая дополнительная информация, как и ваши собственные истории войны, будет оценена по достоинству.

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

ответ

15

Регистрация и обработка ошибок

+0

? Я не помню, как в прошлый раз я смотрел на регистрацию чего-либо, кроме серверных приложений, на которых я писал код. Это действительно ответ разработчиков. – cgp

+0

Это важно. Вы не можете поддерживать и расширять свое приложение, если у вас нет хорошей обратной связи с обратными связями, и понимают ли ваши пользователи это или нет, они нуждаются в вас, чтобы иметь возможность поддерживать и расширять ваше приложение. – chaos

+0

Я предполагаю, что, в конечном счете, возможности поддержки развития зависят от возможностей пользовательского интерфейса. – chaos

6

Лично хорошая черта, что я не придав ему о своем намерении он должен принять это
расширяемость


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

+1

Ясно, что это важно, но это очень неопределенно (сомнительно, действительно ли это «особенность»), и на самом деле не говорит никому, что они должны делать *, чтобы сделать их приложение расширяемым. Я попытался решить эту проблему, добавив конкретные ответы, которые помогают расширяемости. – chaos

4

Поиск. Должно быть легко найти текстовое поле поиска, и результаты должны быть как можно более хорошими.

3

Сочетания клавиш (Ctrl-F, и т.д ...)

0

Модульность - Производительность - расширяемость

Это есть общие цели дизайна - скажем - Smart Client Software Factory. И это работает.

0

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

1

Performance (читай, что, как латентность если вы по желанию).

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

В мире нет других проектов, требующих перфорирования более чем VM-решения на Java и CLR. Это яркий артефакт каждого их продукта, технологии, издания и, конечно же, раздувания под названием: .NET 3.5 и говорят о клиенте Oracle 200MB (lol).

VM просто всасывают каждую новую функцию перфоманса, выпускают и создают приложения на этом, и вам, честно говоря, нужен Cray.

Масштабируемость - совершенно другая история, но человек просто не будет использовать приложения с высокой задержкой и большинство CLR (кроме веб-материалов, которые просто просты и неприменимы в 60% случаев, например, этот сайт/приложение). Загрузите что-то серьезное, и вы будете работать в неуправляемом офисе, неуправляемой среде IDE, неуправляемой базе данных, неуправляемой игре, браузере с умом и т. Д.

Кто-то должен ударить любителей GC с битой и сказать им, чтобы проснуться ..

+0

.NET не использует виртуальную машину. Компиляция JIT сильно отличается. – Ray

+1

.Net kindof использует виртуальную машину, архитектура IL нацелена на архитектуру виртуального ПК, основанную на стеках, но тот факт, что IL (промежуточный байт-код) скомпилирован в собственный код вместо того, чтобы иногда интерпретироваться без какого-либо sanboxing, делает .Net меньше истинная ВМ. –

+0

Мне бы хотелось увидеть какое-то реальное тестирование производительности .NET на C++ (включая время разработки).Но я сомневаюсь, что кто-то собирается написать правильное приложение на обоих языках, чтобы увидеть разницу. – Ray

4

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

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

3

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

8

Интернационализация.
Добавление его как после того, как мысль может быть дорогим

Потенциальные ловушки:

  • не-английский операционки (не берем на себя «Program Files» имя каталога, например)
  • справочные данные (перевод дисплея текст)
  • изображения (текст в изображениях должны быть переведен)
  • раскладку UI (отступ для длинного текста после перевода)
  • мульта i-язычные инсталляторы, EULA и т. д.
  • жестко закодированные строки!
  • не задающие культуры конкретных форматтеры
  • валюты, локализация времени (например, использование запятой против периода в валюте)
  • дизайн подход: встроенные ресурсы против спутниковых сборок (например, «языковые пакеты»)
  • проектирования базы данных: как для хранения/язык поиска конкретных значений
4

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

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

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

Этот пост вряд ли подходит для этого. Я настоятельно рекомендую Don't Make Me Think by Steve Krug в качестве отправной точки для любого заинтересованного лица по поводу удобства использования.

+0

Подобная неопределенность в отношении «расширяемости». Какие конкретные функции мы должны добавить, чтобы наши приложения могли использоваться? – chaos

+0

@chaos Я согласен с вами, но в то же время, если вы начнете думать о юзабилити поздно, вы отделите свои волосы :) Я говорю о чем-то вроде «Администратор должен получить доступ к своим последним отредактированным статьям» –

0

Регрессионное тестирование: Возможность легко, регулярно проверять, что ключевые функциональные элементы продолжают выполняться так, как ожидалось, так как система была изменена. (Это более конкретный элемент «расширяемости».)

1

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

9

Безопасность. Довольно забавно, если неудивительно, что это - четырнадцатый ответ, чтобы подняться.

1

Ввод фокуса ввода по умолчанию: В любом представлении интерфейса, в котором пользователь должен делать любую ввод, фокус ввода должен быть по умолчанию в том месте, которое они, скорее всего, захотят начать печатать. (Это специфическая особенность в области юзабилити.)

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

(Shameless вилка: Я поддерживаю some generalized Javascript that addresses this for Web forms.)

2

Простота - Делайте, что хотите, чтобы пользователи и ожидают, как несколько щелчков мыши, как это возможно.

Stackoverflow - прекрасный пример этого. Интерфейс не загружен хром. Самая большая графика на веб-сайте - около 3 тысяч.

3

Операция без мыши: В любой возможной степени приложение должно облегчить взаимодействие пользователя с ним без использования мыши. (Файл под юзабилити, доступность.)

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

0

Комментарии. Внедрить внутреннюю стандартную систему комментариев (во-первых, задокументировать ее!) - автоматическая система документации комментариев может быть правильной или просто набором стандартных комментариев заголовков программ и комментариев. Пусть программисты заранее знают, как вы ожидаете, что код будет прокомментирован. Просматривайте обзоры кода кросс-программистов, проверяя удобочитаемость/понятность с прицелом на будущую модификацию: если вы следующий человек, работающий над этим кодом, будет ли это иметь для вас смысл?

9

Пользовательский интерфейс/дизайн опыта Многие технологические новшества полагаются на дизайн пользовательского интерфейса, чтобы повысить их техническую сложность до полезного продукта. Только технология [обычно] не завоевывает признание пользователя и последующую товарность.

От IBM:

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

0

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

0

Tagging

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

2

Undo

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

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

1

Входящие
хотя это, кажется, очень мало, чтобы упомянуть, но это действительно имеет большое влияние на удобство применения и производительность слишком Представьте, если пользователь может задать тяжелый отчет, который может занять некоторое минут, чтобы генерировать,
вместо щелчка и ждать ", он может выбрать«отправить мне последний доклад, когда он будет готов»

3

* последние действия/Горячие действия *

Я люблю эту функцию когда-либо где я вижу это:

  • Wikipedia - Что только что изменилось?
  • переполнение стека - Где действительно активные вопросы (где действие!)
  • Блоги/Входящие - Почти каждый блог сортирует этот путь по причине

Даже когда я нахожусь на сайте, как Reddit , многие из нас ищут материал, который прокомментирован больше всего, потому что это интересный материал.

Например, я хотел бы, чтобы это было по умолчанию для ответов, потому что этот ответ будет проигнорирован! :)

2

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

4

Испытаноспособность. Когда у вас это есть, модульность, разделение проблем, повторное использование, правильная обработка ошибок и многие другие хорошие вещи становятся бесплатными.

0

Поддержка Unicode, потому что небезопасно, чтобы кодировка уровня представления была ISO-8859-1, а ваша кодировка уровня постоянства - UTF-8.

Смежные вопросы