Jeśli istnieją dwa sposoby podejścia do zadania, jak należy wybrać między nimi?

11

Mam konkretny przypadek użycia i znalazłem 3 sposoby robienia tego w Internecie, które są zdefiniowane dla niejasnych przypadków użycia. Patrzę na te trzy pytania, które zastosować.

Zwykle siedzę tam, nie wiedząc, co robić - a potem nic nie robię ... Czy istnieje dobry sposób na wybór? Czy powinienem spróbować wszystkich?

Aby być bardziej szczegółowym w pewnym kontekście, staram się stworzyć bardzo lekką grę planszową, w której potrzebuję fragmentu ekranu, który mogę obracać siatką planszy, powiększać ją i przenosić elementy na tej siatce . Nie miałem pojęcia, jak to zrobić, ale znalazłem w Internecie takie rzeczy, jak Core Animation, Core Graphics, Sprite Kit, i widziałem argumenty za i przeciw - na przykład zestaw Sprite jest na wysokim poziomie, ale utrzymuje częstotliwość klatek na poziomie 60, co to marnowanie baterii, gdy tak naprawdę nic nie porusza się na ekranie. Core Animation to interfejs API niższego poziomu, który jest sprzeczny z wytycznymi Apple dotyczącymi „podjęcia najwyższego poziomu abstrakcji”. Nie chcę uczyć się 3 rzeczy, z których można korzystać 1. Czy jest sposób, aby wybrać i zostać zablokowanym?

Pozostawiam to dość niejasne pytanie celowo, ponieważ myślę, że dotyczy ono całego oprogramowania.

Skidushe
źródło

Odpowiedzi:

16

Przeprowadzasz analizę kosztów / korzyści dla każdego z podejść i wybierasz podejście, które ma najwyższy ogólny stosunek korzyści do kosztów.

W przypadku konkurujących bibliotek, które wykonują zasadniczo tę samą funkcję, najlepszym, najłatwiejszym i najszybszym sposobem przeprowadzenia tej analizy jest postawienie małych prototypów za pomocą każdej biblioteki. Który z nich powinien stać się całkowicie jasny.

Możliwe względy kosztów / korzyści dla bibliotek:

  • Konserwowalność
  • Łatwość użycia
  • Odpowiednia dokumentacja
  • Krzywa uczenia się
  • Całkowita wydajność
  • Kup vs. buduj

... itd. Należy pamiętać, że wiele z tych rozważań może być nieco subiektywnych.

Czy to hobby, czy kariera, nie ma znaczenia. Będziesz (i powinieneś) zastosować ten sam proces, jeśli zdecydujesz się kontynuować poszukiwania w prawdziwej karierze.

Alternatywna strategia decyzyjna: Wybierz tę, którą lubisz.

Robert Harvey
źródło
4
W przypadku bibliotek i implementacji stron trzecich dodałbym: wsparcie społeczności , sprawdzone wersje (nie bety, wydania kandydatów lub migawek) , dokumentację bilansu
Laiv
6
Obowiązkowe xkcd: xkcd.com/1445
Sebastian Redl
15

Jako uzupełnienie doskonałej odpowiedzi Roberta Harveya, oto moje 2 centy:

Wybierz jedno podejście, które wydaje się być najmniejszym wysiłkiem na początek, ale upewnij się, że masz otwarte drzwi, aby przejść na inne podejście, gdy okaże się, że wybrane przez ciebie rozwiązanie ma zbyt wiele problemów. A jeśli podejrzewasz pewne problemy w niektórych obszarach scenariusza użytkowania, upewnij się, że najpierw zaimplementujesz te obszary, aby uzyskać wczesną informację zwrotną, zanim będzie za późno, aby cofnąć początkową decyzję.

To, jak dobrze to działa, zależy w dużej mierze od przypadku. Na przykład, jeśli potrzebujesz prostej biblioteki do uzyskania dostępu do urządzenia zewnętrznego lub określonego formatu pliku, upewnij się, że cały dostęp do biblioteki jest zamknięty w warstwie aplikacji. Jednak w przypadku, gdy nie masz pewności, który system wybrać, lub który język programowania wybrać, dokładna analiza kosztów i korzyści to prawdopodobnie wszystko, co możesz zrobić.

Czasami lepiej jest po prostu podjąć decyzję, nawet jeśli jest to druga najlepsza decyzja, o ile faktycznie to robisz.

Doktor Brown
źródło