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.
źródło
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.
źródło