Если есть два подхода к задаче, как выбрать между ними?

11

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

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

Чтобы быть более конкретным для некоторого контекста, я пытаюсь сделать очень легкую настольную игру, где мне нужна часть экрана, с помощью которой я могу вращать сетку настольной игры, увеличивать сетку и перемещать части этой сетки . Я понятия не имел, как это сделать, но я нашел в Интернете такие вещи, как Core Animation, Core Graphics, Sprite Kit, и я увидел аргументы за и против них - например, Sprite kit имеет высокий уровень, но поддерживает частоту кадров 60, что Это пустая трата батареи, когда на экране ничего не движется. Core Animation - это API более низкого уровня, который противоречит указаниям Apple «взять наивысший уровень абстракции». Я не хочу изучать 3 вещи для использования 1. Есть ли способ, которым я могу выбрать и отклеиться?

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

Skidushe
источник

Ответы:

16

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

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

Возможные затраты / выгоды для библиотек:

  • Ремонтопригодность
  • Простота использования
  • Адекватная документация
  • Кривая обучения
  • Общая производительность
  • Купить против построить

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

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

Альтернативная стратегия принятия решений: выберите ту, которая вам нравится.

Роберт Харви
источник
4
В случае libs и сторонних реализаций я бы добавил: поддержку сообщества , estable версии (не бета-версии, релиз-кандидаты или снимки) , документацию по балансу
Laiv
6
Обязательный xkcd: xkcd.com/1445
Себастьян Редл
15

В качестве дополнения к отличному ответу Роберта Харви, вот мои 2 цента:

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

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

Иногда лучше просто принять решение, даже если оно только 2-е лучшее, если вы на самом деле это делаете.

Док Браун
источник