25. Juli 2019 14:48
Auch wenn es nun sehr Offtopic und mehr geworden ist als ich eigentlich schreiben wollte, es passt irgendwie zu den letzten Posts
fiddi hat geschrieben:Ich finde, ein gutes Programm erzählt eine Geschichte, was passiert, wenn man an einer bestimmten Stelle vorbei kommt.
Ist richtig und das tut es auch weiterhin, nur eben auf Modulebene.
fiddi hat geschrieben:Außerdem wird sklavisch an irgendwelchen Design- Richtlinien festgehalten, und eingeführter stabiler Code durch eine Unmenge von SalesSetup.GET ersetzt, weil man keine Globalen Variablen mehr haben will.
Ich muss dir ehrlich sagen, ich begrüße diese Änderung sehr.
Wenn ich an stelle X in CU80 bin möchte ich Wissen was ich zur Verfügung habe und nicht erst alle 87 globalen Variabeln (Stand 2018CU18) überprüfen.
Die Regel gibt es auch in unseren Code-Richtlinien, globale Variabeln sind nur auf Pages erlaubt.
Und ob nun 5x SalesSetup.Get gemacht wird oder nicht, ist doch wurst, das wird eh übern Cache gehändelt
Man mag es vielleicht anders sehen wen man NAV seit anfang an begleitet und genau weis an welcher Stelle was passiert und welche Variabeln gefüllt werden. Die Einstieg für neue Entwickler ist dadurch aber so extrem komplex.
fiddi hat geschrieben:Das größte Problem in der Software- Entwicklung scheint aber die mangelnder Erfahrung der Entwickler zu sein. Das ist allerdings kein Problem von Microsoft alleine.
Wenn Buchhalter entscheiden, das Leute frisch von der Uni billiger sind als Programmierer mit 10 und mehr Jahren Erfahrung, muss sich nicht wundern, wenn da nichts Vernünftiges dabei herauskommt.
Ein Entwicklerteam sollte immer aus Erfahrenen und Neulingen bestehen, damit der eine von dem Anderen lernen kann. Wobei das nicht nur in eine Richtung gehen sollte.
Das ist nen Punkt wo ich dir 100% recht gebe, hinzu kommt das das NAV Umfeld (im Gegensatz zu anderen Programmiersprachen und/oder ERP Systemen) relativ schlecht bezahlt ist. NAV wird nur an einer Handvoll Unis überhaupt behandelt, in der Regel ist es SAP.
In den 5 Jahren, die ich nun im NAV Umfeld tätig bin, musste ich leider feststellen, dass vor allem von älteren "Entwickler" oft einfach nur Code von A nach B kopieren weil sie es immer so gemacht haben und das an der anderen Stelle so funktioniert, aber sie mir nicht erklären konnten warum. Wie oft hab ich gesehen das sie immer noch rec.findfirst; repeat .. schreiben.
sweikelt hat geschrieben:durch Extensions hab ich vor kurzem eine Liste / Karte nicht mehr öffnen können - Grund war, dass die Extension auf ein Feld verwies, was ich rausgekickt hatte.
Wie hättest du das Ganze denn mitbekommen wenn es keine Extension gewesen wäre? Du hättest alles exportieren und mit where used überprüfen müssen. Oder du hättest die besagte Page Compelieren müssen um es mitzubekommen.
Jetzt Deinstallierst und installierst du einfach die Extension neu und diese sagt dir beim Installieren dann ob nen Fehler existiert.
----
Ich bin Softwareentwickler aus Leidenschaft, ich habe spass daran saubere (sowohl vom Code, als auch von der usability), elegante Lösungen an den Endnutzer zu überreichen.
Ich begrüße die meisten Änderungen die Microsoft macht, denn es ist der Zahn der Zeit. Es gibt nicht mehr DIE Lösung, sondern man "klickt" sich seine Lösung aus verschiedenen Modulen zusammen.
Wir haben angefangen im August 2017 mit Extensions zu beschäftigen und zu testen was möglich ist und was nicht.
Seit Februar 2018 entwickeln wir 99% unserer Anwendung in Extensions. Der letzte Prozentpunkt beschränkt sich in der Regel darauf neue Publisher zu implementieren - dabei orientieren wir uns an den BC releases ob dort ggf. publisher dafür implementiert wurden.
Alle unsere Änderungen müssen in 4 verschiedene Lokalisationen implementiert werden.
Jeder unserer Entwickler entwickelt lokal auf seinem Rechner gegen eine Docker Instanz. Jede Änderungen an unserem System geht in eine Versionkontrolle und wird erst einmal gegen alle notwendigen Lokalisierungen getestet und gegen Coderichtlinien gecheckt. Wenn alles gut ist wird das ganze in allen Testsystem bereitgestellt (und das in weniger als 3 minuten).
Allerdings muss ich zugeben das wir derzeit noch keine Unit Tests haben
Vorteile die ich sehe:
* CU Updates kosten keine Zeit mehr
* Module sind komplett separiert
* Kein rumhantieren mit DeltaFiles mehr wenn die Extension in verschiedene Lokalisierungen gespielt werden soll
* Es kann nichts mehr vergessen werden wenn eine Extension von eine in die andere Datenbank kopiert wird
* Übersetzungen sind komplett von der Entwicklung losgelöst
* super einfache Versionskontrollen implementation (auch CI / CD)
* Code lässt sich schneller schreiben
* endlich keine .dll Dateien mehr
Nachteile die ich sehe:
* Man kann in sehr grossen Extensions schnell den Überblick verlieren
* "Mach mal schnell" ist nicht mehr wirklich möglich (obwohl ich das für Entwickler nicht wirklich nen Nachteil ist)
* Für ein Update eines Moduls muss die Vorgänger version deinstalliert werden - es muss sichergestellt werden das kein Nutzer im System ist
Was ich vermisse
* eine Möglichkeit Dependencies optional zu machen