Keine Zeile LS-Code ohne ErrorHandler, der zumindest ErrorCode und ErrorLine ausgibt.
Konstanten auch als solche deklarieren (ggf. "Pseudo-Konstanten" verwenden) und diese an zentraler Stelle deklarieren.
(Also nicht Set viewLookup = dbCurrent.GetView ("(LookupView)"), sondern Const VIEW_LOOKUP = "(LookupView)" usw.)
Das FrontEnd immer an den üblichen Notes-Standards ausrichten (Funktionsweise, Beschriftung und Icons für Buttons usw.)
Keine UI-Klassen in Agents, die im Backend laufen werden.
Jeder LS-Routine einen aussagekräftigen Header verpassen, der Sinn und Zweck, Parameter und Rahmenbedingungen ausdrücklich erklärt - und diesen weiter pflegen !
Zwischenstände der Entwicklung permanent sichern - das rettet manchmal zig Stunden Entwicklungsarbeit.
Schon gesagt, aber m.E. wirklich wichtig: Felder, die nicht per @functions oder durch Interaktion mit dem User gefüllt werden, nicht in Masken aufnehmen. Falls erforderlich, diese als computed when composed deklarieren.
Wo machbar, Felder als computed for display deklarieren.
Ansichten so schlank wie nur irgend möglich halten und immer daran arbeiten, die Anzahl der Ansichten zu minimieren. Auch wenn das als Widerspruch erscheinen mag: Jede Ansicht, auf die programmatisch zugegriffen werden soll, als versteckte Ansicht erstellen.
Datenbank-Synopsen bei der Weiterentwicklung bereithalten. Teamstudio Analyzer wäre natürlich besonders fein ;-)
Subform-Anzahl pro Maske minimieren (Performance).
To be continued ...
Bernhard