Wenn es zwei Möglichkeiten gibt, sich einer Aufgabe zu nähern, wie sollte man zwischen ihnen wählen?


11

Ich habe einen bestimmten Anwendungsfall und habe drei Möglichkeiten gefunden, dies über das Internet zu tun, die für vage Anwendungsfälle definiert sind. Ich starre auf diese drei und frage mich, welche ich anwenden soll.

Ich neige dazu, dort zu sitzen und nicht zu wissen, was ich tun soll - und dann nichts zu tun ... Gibt es eine gute Möglichkeit zu wählen? Soll ich alle ausprobieren?

Um für einen bestimmten Kontext genauer zu sein, versuche ich, ein sehr leichtes Brettspiel zu erstellen, bei dem ich einen Teil des Bildschirms benötige, auf dem ich das Brettspielraster drehen , in das Raster zoomen und Teile in diesem Raster verschieben kann . Ich hatte keine Ahnung, wie das geht, aber ich fand Dinge online wie Core Animation, Core Graphics, Sprite Kit und sah Argumente dafür und dagegen - zum Beispiel ist Sprite Kit auf hohem Niveau, hält aber die Bildrate bei 60, was ist eine Verschwendung von Batterie, wenn sich auf dem Bildschirm nichts wirklich bewegt. Core Animation war eine API auf niedrigerer Ebene, die sich Apples Anleitung widersetzt, "die höchste Abstraktionsebene zu erreichen". Ich möchte nicht lernen, wie man 3 Dinge benutzt 1. Gibt es eine Möglichkeit, wie ich wählen und mich lösen kann?

Ich lasse dies als eher vage Frage, da ich denke, dass sie im gesamten Bereich der Software gilt.

Antworten:


15

Sie führen für jeden Ansatz eine Kosten-Nutzen-Analyse durch und wählen den Ansatz mit dem höchsten Gesamt-Nutzen-Kosten-Verhältnis.

Bei konkurrierenden Bibliotheken, die im Wesentlichen dieselbe Funktion ausführen, besteht die beste, einfachste und schnellste Möglichkeit, diese Analyse durchzuführen, darin, kleine Prototypen mit jeder Bibliothek aufzustellen. Welches zu bevorzugen ist, sollte dann reichlich klar werden.

Mögliche Kosten-Nutzen-Überlegungen für Bibliotheken:

  • Wartbarkeit
  • Benutzerfreundlichkeit
  • Angemessene Dokumentation
  • Lernkurve
  • Gesamtleistung
  • Kaufen gegen Bauen

... usw. Beachten Sie, dass viele dieser Überlegungen etwas subjektiv sein können.

Ob es ein Hobby oder eine Karriere ist, spielt keine Rolle. Sie werden (und sollten) den gleichen Prozess anwenden, wenn Sie sich entscheiden, Ihre Erkundungen in einer tatsächlichen Karriere fortzusetzen.

Alternative Entscheidungsstrategie: Wählen Sie die Strategie aus, die Ihnen gefällt.


4
Im Falle von Bibliotheken und Implementierungen von Drittanbietern würde ich hinzufügen: Community-Support , estable-Versionen (keine Betas, Release-Kandidaten oder Snapshots) , Dokumentation zum Kontostand
Laiv

6
Obligatorisch xkcd: xkcd.com/1445
Sebastian Redl

15

Als Ergänzung zu Robert Harveys hervorragender Antwort hier meine 2 Cent:

Wählen Sie den einen Ansatz, der zunächst den geringsten Aufwand zu bedeuten scheint. Achten Sie jedoch darauf, dass Sie die Tür offen halten, um zu einem anderen Ansatz zu wechseln, wenn sich herausstellt, dass die zuerst ausgewählte Lösung zu viele Probleme aufweist. Wenn Sie bestimmte Probleme in bestimmten Bereichen Ihres Nutzungsszenarios vermuten, stellen Sie sicher, dass Sie diese Bereiche zuerst implementieren, damit Sie frühzeitig Feedback erhalten, bevor es zu spät ist, Ihre ursprüngliche Entscheidung rückgängig zu machen.

Wie gut dies funktioniert, hängt stark vom Fall ab. Wenn Sie beispielsweise eine einfache Bibliothek für den Zugriff auf ein externes Gerät oder ein bestimmtes Dateiformat benötigen, stellen Sie sicher, dass Sie den gesamten Bibliothekszugriff in einer Ebene Ihrer Anwendung kapseln. Falls Sie sich jedoch nicht sicher sind, welches Framework Sie auswählen sollen oder welche Programmiersprache Sie auswählen sollen, können Sie wahrscheinlich nur eine gründliche Kosten-Nutzen-Analyse durchführen.

Manchmal ist es besser, einfach eine Entscheidung zu treffen, auch wenn es nur die zweitbeste ist, solange Sie es tatsächlich tun.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.