Якщо існують два способи підходу до завдання, як слід обирати між ними?


11

У мене є конкретний випадок використання, і я знайшов 3 способи зробити це через Інтернет, які визначені для невиразних випадків використання. Я дивлюся на цих трьох, цікаво, що подати.

Я схильний сидіти там, не знаючи, що робити - тоді нічого не роблячи ... Чи є хороший спосіб вибору? Чи варто спробувати їх усіх?

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

Я залишаю це як досить невиразне питання цілеспрямовано, оскільки я думаю, що це стосується всієї області програмного забезпечення.

Відповіді:


16

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

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

Можливі міркування щодо вартості / вигоди для бібліотек:

  • Технічне обслуговування
  • Простота використання
  • Адекватна документація
  • Крива навчання
  • Загальна продуктивність
  • Купуйте проти збірки

... і т.д. Зауважте, що багато з цих міркувань можуть бути дещо суб'єктивними.

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

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


4
У випадку з libs та сторонніми реалізаціями, я додам: підтримка спільноти , версії , доступні для версій (не бета-версії, випуски кандидатів чи знімків) , документація на балансі
Laiv

6
Обов’язковий xkcd: xkcd.com/1445
Себастьян Редл

15

Як додаток до відмінної відповіді Роберта Харві, ось мої 2 центи:

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

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

Іноді краще просто прийняти рішення, навіть якщо це лише 2-е найкраще, доки ти насправді це робиш.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.