Раздутие функций: насколько это слишком много?

StackOverflow https://stackoverflow.com/questions/799728

  •  18-09-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

«Сделайте все как можно проще, но не проще». - Альберт Эйнштейн

«Совершенство достигается не тогда, когда нечего добавить, но когда нечего забрать». - Antoine de Saint-Exupery


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

Попробуйте думать о вещах немного по-другому.Скорее, чем

Сколько вещей я могу добавить, прежде чем это раздуется?

пытаться

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

Другие советы

Вот хороший набор слайдов из презентации по теме: Спасение принцессы 2.0.

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

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

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

Microsoft не одинока в этом;это происходит постоянно, со всеми видами продуктов;но, как я обнаружил, они относятся к числу худших нарушителей.

1:Что нужно и чего хотят ваши пользователи?

2:Какие функции вы успеете реализовать?

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

Четкой границы между «хорошо» и «слишком много» не существует.Однако это зависит от того, что вы хотите сделать.

Если вы разрабатываете SDK, я рекомендую разделить вашу реализацию на несколько небольших библиотек (вместо одной большой библиотеки SDL есть ядро ​​SDL, SDL_Mixer, SDL_Image, и т. д.)

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

Вы можете дойти до момента, когда добавите новые функции, которые некоторые сочтут «отличными», а другие — «раздутыми».В противном случае ваше приложение может достичь точки, в которой некоторые назовут его «неполноценным», а другие назовут его «достаточно».

Это не точная цитата, но идея была примерно такая:

Программа идеальна не тогда, когда больше нечего добавить, а когда больше нечего удалять.

По сути, чем проще и точнее программное обеспечение, тем лучше.

Чтобы получить примеры хорошего дизайна программного обеспечения, взгляните на популярные сегодня программы.Приложения Google были бы хорошим местом для поиска.Скайп возможно.Хех, даже StackOverflow.:)

Если хотите чего-то запугать, отправляйтесь в мир САПР.Посмотрите, например Блендер.Это бесплатная программа для 3D-дизайнера.Мне сказали, что это хороший инструмент, но в пользовательском интерфейсе очень много кнопок/панелей/меню/и т. д.что это заставляет кроликов плакать.К сожалению, я не могу сказать, будет ли это хорошим примером «плохого» пользовательского интерфейса.3D проектирование – это очень сложный процесс, и все эти инструменты, вероятно, находятся в нужном месте.Но это определенно пугает.:)

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top