Руководящее излишнее усложнение в [закрытых] графический интерфейсах пользователя

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

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

13
задан 5 revs, 4 users 62% 7 December 2011 в 15:43
поделиться

28 ответов

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

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

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

15
ответ дан 1 December 2019 в 17:24
поделиться

ЕСЛИ Вы не менеджер или владелец проекта, я предписываю следующее:

, Если они хотят это, сделайте это. Удостоверьтесь, что они платят Вам на дне платежа. Я узнал, что иногда бой для получения вещей соответствовать тому, что Вы хотели бы, не стоит вести. Наслаждайтесь жизнью, после работы и запланируйте & кодируйте свои собственные персональные проекты, которые делают вещи правильный путь.

0
ответ дан 1 December 2019 в 17:24
поделиться

Ответ на Ваш вопрос более широк, чем просто графический интерфейсы пользователя. Функция/Расползание границ проекта будет всегда происходить, когда кто-то не будет уделением внимания, что предусмотрел контракт и когда нет формального процесса для обработки запросов на изменение.

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

0
ответ дан 1 December 2019 в 17:24
поделиться

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

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

0
ответ дан 1 December 2019 в 17:24
поделиться

Не могло бы быть возможно избежать всех запросов новых функций.

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

0
ответ дан 1 December 2019 в 17:24
поделиться

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

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

0
ответ дан 1 December 2019 в 17:24
поделиться

Правильный вопрос спросить, 'Как я могу дать разработчикам стабильный среда, в то время как все еще ответ только к высоким запросам новых функций преимущества'. ТОЛПА как подход была бы:

Стабильная среда:

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

Ответ только высокие запросы новых функций преимущества:

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

0
ответ дан 1 December 2019 в 17:24
поделиться

Шоу их, как простые графический интерфейсы пользователя могут быть эффективными. Примеры: Google Chrome, программное обеспечение Apple. Можно также хотеть показать примеры чрезмерно увеличенного в размерах программного обеспечения, как Eclipse, Netbeans, Visual Studio... хорошо, это на самом деле все программное обеспечение IDE, но они все создали помехи интерфейсу.

0
ответ дан 1 December 2019 в 17:24
поделиться

Набор функций привязки для кратковременного кадра (Толпа/повторение/гибкая). Поскольку пользователь начинает видеть вещи работать, необходимость или отсутствие этого функций станут более очевидными.

кроме того, полезно иметь человека, через которого все изменения происходят (в Толпе, действительно хорошем Владельце продукта).

0
ответ дан 1 December 2019 в 17:24
поделиться

Мы следуем за каркасами в моем офисе. Любое изменение после выхода должно перейти процедуру Контроля изменений.

0
ответ дан 1 December 2019 в 17:24
поделиться

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

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

0
ответ дан 1 December 2019 в 17:24
поделиться

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

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

1
ответ дан 1 December 2019 в 17:24
поделиться

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

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

0
ответ дан 1 December 2019 в 17:24
поделиться

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

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

Прочитайте несколько хороших книг по разработке программного обеспечения и дизайну пользовательского интерфейса и попросите вашего менеджера прочитать их. Книги Джоэла Спольски - хорошее место для начала - www.joelonsoftware.com

1
ответ дан 1 December 2019 в 17:24
поделиться

1) Увеличенное время перед выпуском.

2) Увеличенная стоимость.

3) Экспоненциальная стоимость обслуживания

4) Увеличенный потенциал для ошибок

Для управления запросом новых функций попросите, чтобы они отправили заявку на изменение. Периодически, рассмотрите заявки на изменение и передайте оператор обратно о каждом запросе, "Это займет много времени X, чтобы сделать, подразумевая эту дополнительную стоимость Y. Действительно ли это приемлемо?" После того как запрашивающая сторона приняла дополнительную стоимость, затем это - a-ok. Ваши руки промываются.:)

1
ответ дан 1 December 2019 в 17:24
поделиться

Если существует урок, мы можем извлечь уроки из Интернета и видов Web 2.0 вещей, это - тот, люди любят настройку. Это - то, о чем iGoogle и сотни других сайтов - все. Если можно создать настройку в к GUI, возможности являются клиентами, будет любить Вас за него.

кроме того, смотрите на то, как другие проекты успешно управляют излишним усложнением. Например, Google позволяет пользователям отправить запросы новых функций, но также и показывает список функций, которые уже требуют. Пользователи могут тогда голосовать для запроса той функции также. Не то, чтобы я - сосание, но смотрю на stackoverflow.uservoice.com . У них есть подобная политика.

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

1
ответ дан 1 December 2019 в 17:24
поделиться

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

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

Однако излишнее усложнение является очень трудной вещью справиться. И как хорошо Вы справляетесь, это зависит от Вашего положения и кто "сползание". Если Вы - середина юниору разработчика уровня, и генеральный директор требует функцию; хорошо, Вы собираетесь быть добавляющими ту опцию. Можно попытаться убедить генерального директора, что это не ценная функция, или это не будет работать, или существуют более важные вещи продолжить работать, или это негативно повлияет на расписание. Но никогда не делайте ни одно из этого в то время, когда функцию требуют. Все, с чем Вы закончите, является двумя людьми, отстаивающими их позицию вместо того, чтобы сотрудничать к общей цели.

Вместо этого примите обратную связь и запрос новых функций (или спрос на функцию) по номиналу сразу. Уйдите, думайте об этом открыто некоторое время собой. "Это могло быть ценно?" "Я пропускаю что-то в способе, которым генеральный директор попросил это?" "Это настолько трудно, как я разбираю его, чтобы быть?" Спрашиваете себя эти виды вопросов и придумываете некоторые конкретные ответы. Тогда всегда возвращаются к генеральному директору с последующими вопросами. Продемонстрируйте, что Вы думали о функции, которую требуют, и на самом деле придумали некоторые идеи, тонкие настройки, улучшения или возражения, и т.д. Это создаст открытое обсуждение. Тот, который генеральный директор не ожидал, но что он, скорее всего, не возразит против того, так как это не было прямое сопротивление его идее первоначально.

1
ответ дан 1 December 2019 в 17:24
поделиться

Ключ, кажется, находится в вопросе.

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

1
ответ дан 1 December 2019 в 17:24
поделиться

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

  • Развивают тесную связь с Вашими пользователями. Позвольте им знать, что Вы всегда интересуетесь их входом. Периодически звоните им и спрашивайте, как Ваше программное обеспечение рассматривает их.
  • Узнают их привычки работы, общепринятую практику, как они используют Ваше программное обеспечение, и как они используют свое другое программное обеспечение. Поскольку та информация входит, соберите ее.
  • , Когда запросы новых функций входят, Ваши пользователи не будут действительно знать то, что они хотят. Вы знаете то, что они хотят, тем не менее, потому что у Вас есть экспертные знания, и Вы слушали. Так, работайте с ними для разъяснения проблемы, они имеют, затем используют собранное знание для обобщения проблемы как лучше всего, Вы можете. Запишите решение, которое решает тот проблема.

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

1
ответ дан 1 December 2019 в 17:24
поделиться

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

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

1
ответ дан 1 December 2019 в 17:24
поделиться

Вы не можете обработать просто излишнее усложнение - необходимо организовать целый процесс разработки надлежащим способом.

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

, Когда Вы будете в состоянии доказать с реальными числами, что 'эта маленькая кнопка' заняла бы 2-3 дня вместо 5 секунд, которым, вероятно, верит клиент, это должны быть Вы, будет в намного лучшем положении для согласования.

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

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

1
ответ дан 1 December 2019 в 17:24
поделиться

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

Несогласие с клиентом о функции обычно не получает Вас нигде. Если Вы очевидно скажете "нет" им, то они будут чувствовать себя отчужденными и потерявшими связь с Вами и Вашей командой. Функцией, вероятно, является хорошая идея в целом, допустил, что Вы имеете все время и деньги в мире и никаких технических ограничениях. В их мировой способности видеть fiz рядом с панель после того, как они нажмут , надрез является хорошей идеей. Конечно, в нашем мире это означает полное сканирование таблицы, потенциальную уязвимость системы обеспечения безопасности и весь nighter удостоверяться, что это находится в выпуском следующего вопроса.

, Если Вы размечаете его для них и объясняете, почему это не действительно хорошая идея в целом, они будут обычно понимать. Не забывайте все различные факторы (время/деньги/стоимость добавляющей сложности к проекту/риску скользящих крайних сроков). Разумный человек поймет, красите ли Вы изображение достаточно четким, и можно, по крайней мере, сказать, что "Я сказал Вам так" неблагоразумному человеку.

2
ответ дан 1 December 2019 в 17:24
поделиться

Для менеджеров:

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

Для всех:

  • , если новыми возможностями является in-your-face в UI, начните говорить об эффекте визуальной сложности на удобстве использования - и от этого, привлекательности - продукта как целый. Но я уверен, что Вы уже делаете это. Я попытаюсь откопать некоторые ссылки...
2
ответ дан 1 December 2019 в 17:24
поделиться

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

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

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

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

4
ответ дан 1 December 2019 в 17:24
поделиться

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

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

  1. Прогрессивно Откладываемые времена Выпуска
  2. Увеличенные Ошибки
  3. функции Incomplete
  4. напряжение Штата
  5. отставки Штата.
  6. Дополнительная плата для ожидания больше из конечного продукта, чем была согласована в объявлении цены (и это ДЕЙСТВИТЕЛЬНО ПЛОХО)

, Если они не хотят придерживаться системы, которая устойчива и продуктивна, можно было бы хотеть выбрать № 5 или угрожать № 5.

2
ответ дан 1 December 2019 в 17:24
поделиться

То, что я делаю, является идеями функции содержания об учетных карточках, и отправьте карты, где-нибудь видимые. Когда кто-то спрашивает, "Это могло также сделать XXX?" Я пишу новую карту. Это - лучшее перемещение выстраивания отношений, чем крик "НЕТ!":-), Это также имеет преимущество не потери потенциально хороших идей. OTOH, я не являюсь объектом никакого принуждения для реализации его прямо тогда. suggester знает, что их слушали, я знаю, что не забуду, я могу возвратиться к работе, и мы можем все собраться для принятия приоритетных решений в лучшее время чем тогда, когда мой мозг находится в CodeLand.

14
ответ дан 1 December 2019 в 17:24
поделиться

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

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

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

Мы используем ТОЛПУ и ее великое. После нескольких повторений разработаны все объекты бизнес-уровня и уровня процесса, и Вы поставляете точно, что они хотят к концу.

10
ответ дан 1 December 2019 в 17:24
поделиться

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

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

Мы используем Bugzilla для отслеживания ошибки - но также и Запросы новых функций. У нас есть 'функции' worklist (или целевая версия)... тот способ, которым все видят, какие функции мы хотели бы разработать в будущем и поскольку у людей есть больше идей о функции, они могут простой добавлять больше к объекту в Bugzilla.

Каждый выпуск, когда мы садимся и разрабатываем worklist's для версии, мы опускаем пальцы ног в список функций, чтобы видеть, существует ли что-нибудь, что мы можем втянуть. Мы действительно пытаемся вытянуть в функции, когда мы можем и давать обратную связь людям - это показывает, что функции и идеи не не находят отклика.

Эта обратная связь в помогает людям знать, что мы - acknowleding их запросы функций, и мы ДЕЙСТВИТЕЛЬНО возвращаемся к реализации их, а не их просто находящийся в списке, который становится больше и больше.

1
ответ дан 1 December 2019 в 17:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: