web-dev-qa-db-de.com

Wie sage ich meinem Chef, dass die Arbeit mit Xamarin nicht schneller wird?

Ich bin der einzige mobile Entwickler in meinem Job. Bevor ich eingestellt wurde, dachte mein derzeitiger Chef darüber nach, Xamarin zu verwenden, da das Marketing die Wörter Shared Code und native sagt. Ich betrachte mich als fortgeschrittener Android Entwickler, da ich große Informationssysteme aufgebaut habe. Im Moment arbeite ich an einfachen Apps, die ich in einer Woche fertig stellen könnte, aber Xamarin bereitet mir Kopfschmerzen, da sie zu fehlerhaft sind, und der wiederverwendbare Code liegt bei etwa 10%, der leicht in iOS kopiert/eingefügt werden könnte. und trotz der Tatsache, dass Sie diesen 10% Code teilen können, müssen Sie manchmal noch Kompilierungsanweisungen verwenden #if / #endif.

Ich meine, es gibt keinen wirklichen Vorteil für mich, da ich bereits die beiden Sprachen Java und Objective-C Kenne. Ich habe bereits umfassende Kenntnisse über SQLite und Datenspeicherung mit Core Data Auf iOS und Android SDK, sodass das Erlernen von Xamarin langsamer wird.

Ich habe bereits versucht, sie davon abzubringen, Xamarin nicht zu kaufen, da es sich nur um einen kleinen Code handelt, den Sie teilen können, aber sie scheinen es auch nicht zu verstehen.

Ich brauche ein gutes Argument, um sie davon zu überzeugen, es nicht zu kaufen, damit ich meine Arbeit produktiver und schneller erledigen kann. Danke im Voraus.

31

Einige gute Punkte aus Lee Whitneys Blog: Warum ich Xamarin für die mobile Entwicklung nicht empfehle :

App-Overhead

Xamarin-basierte Apps haben einen integrierten Overhead, der sie im Durchschnitt größer macht. Dies wirkt sich auf die Download-Zeit und den auf einem Gerät verwendeten Speicher aus. Die minimale zusätzliche Größe beträgt normalerweise einige Megabyte und kann proportional wachsen, wenn der Code mehr APIs verwendet. Dies liegt an der Art und Weise, wie Code aus .NET-Assemblys statisch (als systemeigener Code) mit Apps verknüpft wird, wenn auf die Assemblys verwiesen wird. Auf Android) gibt es auch eine zusätzliche Startverzögerung für Apps aus betriebssystemspezifischen Gründen. Zu Xamarins Gunsten war dieser Aufwand früher viel höher und das Unternehmen hat große Fortschritte bei der Reduzierung gemacht auf App-Nutzer ist noch messbar.

Eingeschränktes Teilen von UI-Code über iOS und Android

Die Entwicklung der Benutzeroberfläche ist nicht zwischen iOS und Android übertragbar.
Dies bedeutet, dass APIs, Ereignislogik, Widgets und Designer für jede Plattform unterschiedlich verwendet und codiert werden müssen. Für allgemeine Operationen auf niedriger Ebene gibt es einige Ausnahmen.

Xamarin argumentiert, dass der Versuch, Benutzeroberflächen-APIs über sehr unterschiedliche Plattformen hinweg zu abstrahieren, zu unnötiger Komplexität führen kann oder zu einer schlechten Benutzererfahrung bei einem Design mit LCD (kleinster gemeinsamer Nenner)) führt Dies wird teilweise versucht, und das Ergebnis hat viele Entwickler mit den inkonsistenten oder unvorhersehbaren Ergebnissen unzufrieden gemacht. HTML5-Apps können diese UI-Abstraktion erfolgreicher ausführen, ohne ein LCD Design zu erzwingen, aber sie tun es habe nicht die native Leistung von Xamarin.

Probleme mit der Benutzeroberfläche können einige der zeitaufwändigsten Aspekte bei der Entwicklung mobiler Apps sein. Trotz einer guten Begründung ist es wichtig, dass Xamarin bei vielen Problemen mit der mobilen Benutzeroberfläche Entwicklern oder Designern keine Zeit spart.

Eingeschränktes Teilen von Code außerhalb von Xamarin

In Xamarin können keine wiederverwendbaren Komponenten oder Module außerhalb der eigenen Umgebung erstellt werden. Beispielsweise kann in Xamarin geschriebener Code nicht in nativen oder HTML5-Apps verwendet werden. Dies bedeutet, dass von einem Team mit Xamarin entwickelter Code nicht mit anderen Tools für iOS und Android geteilt oder für Teams wiederverwendet werden kann. Wie wichtig dies ist, hängt von der jeweiligen Situation ab. Das Problem bei der Entwicklung ist jedoch, dass wir nicht alle unsere Situationen vorhersagen können. Es ist also eine unangenehme Einschränkung, direkt aus dem Tor zu haben.

Ökosystem und Gemeinschaft

Dies ist etwas, was nicht wirklich Xamarins Schuld ist. Welches Unternehmen verfügt über ein mobiles Ökosystem, das mit Apple, Google oder HTML5 übereinstimmt? Es ist jedoch wichtig. Wenn Entwickler beim Durchsuchen des Webs nach einem Problem mit zehnmal höherer Wahrscheinlichkeit Ergebnisse erzielen, wirkt sich dies direkt auf die Produktivität aus. Das Ökosystem der verfügbaren Support-, Service- und Drittanbieter-Komponenten sowie der zugehörigen Tools ist und bleibt erheblich kleiner als bei nativen oder HTML5-basierten Apps.

Die dritte Lernkurve

Einige Konzepte und Techniken erfordern spezielle Kenntnisse für die Xamarin-Umgebung. Dies bietet Entwicklern eine dritte Lernkurve, die über die Programmiersprache und native APIs hinausgeht. Beispielsweise müssen Entwickler die iOS-Referenzzählung verstehen, um Probleme mit der Garbage Collection von Xamarin zu vermeiden ( Ist dies ein Fehler in MonoTouch GC? ). Ein weiteres Beispiel sind Datenstrukturen und Generika, die auf subtil unterschiedliche Weise funktionieren ( http://docs.xamarin.com/guides/ios/advanced_topics/limitations ). Dies sind die Arten von Problemen, die schwer zu erkennen sind, bevor Sie eine neue Plattform einführen. Sie sollten daher besonders berücksichtigt werden.

Weitere bewegliche Teile

Xamarin führt eine Reihe eigener Fehler ein, die sich auf die Produktqualität und die Entwicklerproduktivität auswirken. Das Problem ist nicht, dass Xamarin ein schlechtes Produkt hat, sondern dass das Hinzufügen eines großen oder komplexen Systems zur App-Toolchain Probleme und Fehler mit sich bringt, die in nativen Apps nicht existieren.

Die historischen Aufzeichnungen dieser Fehler können mit Xamarins Bug-Tracker überprüft werden ( https://bugzilla.xamarin.com ).

Ja, alle Software hat Fehler. Der Punkt ist, wenn Sie den Vorteil des Hinzufügens neuer Werkzeuge messen; Der Nachteil neuer Probleme muss berücksichtigt werden.

Zusammenfassung

Am Ende müssen wir versuchen, die Vorteile einer Entwicklungsabstraktion wie Xamarin gegenüber anderen Abstraktionen oder der nativen Entwicklung zu quantifizieren. Ist C # besser als Objective-C? Ja, meiner Meinung nach, aber das ist nur ein Faktor. Wenn Sie alles zusammenfassen, wird Xamarin von anderen Ansätzen für die mobile Entwicklung abgelöst. Ab 2013 (dies kann sich schnell ändern) entscheide ich mich eher für eine native Codelösung oder eine HTML5/Cordova-Lösung. Ich mag beides aus verschiedenen Gründen und werde versuchen, einige der Entscheidungsfaktoren in einem anderen Artikel zu erklären.

45
Pancho