Какими функциями любое хорошее приложение должно заботиться о "By-Design",

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

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

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

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

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

Ответ 1

Обработка журналов и ошибок

Ответ 2

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

Ответ 3

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

От IBM:

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

Ответ 4

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

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

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

Ответ 5

Лично хорошая особенность, которую я не давал ей, она должна
расширяемость


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

Ответ 6

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

Ответ 7

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

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

Ответ 8

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

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

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

Этот пост вряд ли подходит для этого. Я настоятельно рекомендую Не заставляйте меня думать от Steve Krug в качестве отправной точки для любого человека, интересующегося юзабилити.

Ответ 9

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

Ответ 10

Горячие клавиши (ctrl-f и т.д.)

Ответ 11

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

Ответ 12

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

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

Ответ 13

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

Мне нравится эта функция везде, где я ее вижу:

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

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

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

Ответ 14

Простота. Сделайте то, чего хотят пользователи, и ожидайте как можно меньше кликов.

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

Ответ 15

Undo

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

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

Ответ 16

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

Ответ 17

Производительность (прочитайте это как задержка, если хотите).

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

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

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

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

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

Ответ 18

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

Ответ 19

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

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

(Бесстыдный плагин: я поддерживаю некоторый обобщенный Javascript, который обращается к этому для веб-форм.)

Ответ 20

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

Ответ 21

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

Это общие цели дизайна - пусть говорят - Smart Client Software Factory. И это работает.

Ответ 22

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

Ответ 23

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

Ответ 24

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

Ответ 25

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

Ответ 26

Пометка

не только в приложениях, ориентированных на сообщества, но и для приложений Line-Of-Business Предоставляя тегирование, Employee может создать новый тег "Наблюдать за этим" , который он может прикреплять для записи ученика, получения квитанции и ect...

Ответ 27

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