Artikel mit dem Tag „Design“
23 Artikel mit dem Tag „Design“, vom neuesten zum ältesten.
-
Praktische Best Practices für Multithreading: Java-Edition — Konventionen im Zeitalter der virtuellen Threads
In Java erzeugt man Threads nicht selbst, sondern setzt auf ExecutorService und virtuelle Threads. Der Artikel ordnet synchronized und ReentrantLock, koopera...
-
Praktische Multithreading-Best-Practices: C-Edition — sicher schreiben nach der Win32-API
Multithreading in C unter Win32 folgt etablierten Mustern: Threads mit _beginthreadex erzeugen, SRW-Locks und Bedingungsvariablen, Interlocked sowie ein Stop...
-
Praktische Multithreading-Best-Practices: C++-Edition — Fehler mit RAII und jthread strukturell ausschließen
In C++ wird eine Datenrace zu undefiniertem Verhalten. Der Artikel ordnet die Falle des std::thread-Destruktors, das Stoppen mit jthread und stop_token, die ...
-
Praktische Best Practices für Multithreading: .NET-Edition — Was Sie entscheiden sollten, bevor Sie weitere Threads hinzufügen
Eine praxisnahe Übersicht der Entwurfsregeln, die verhindern, dass Multithreading-Code in .NET/C# gelegentlich abstürzt oder hängen bleibt: auf Task statt au...
-
Verwenden Sie den ausgelesenen Wert eines QR-Codes nie ungeprüft — Erfolgreiche Fehlerkorrektur garantiert nicht den Wert
Die Fehlerkorrektur von QR-Codes ist kein Mechanismus, der garantiert, dass der Wert korrekt ist, sobald die Korrektur gelingt. Anhand von Beispielbildern un...
-
Schluss mit Write-Host — PowerShells Ausgabeströme und Log-Design
Wie Sie zwischen den sechs Ausgabeströmen von PowerShell wählen, welche Probleme Write-Host mit sich bringt und wo es tatsächlich hingehört, warum Rückgabewe...
-
Code-Design für Geschäftssysteme — Produkt- und Kundencodes festlegen, und Prüfziffern
Ein praxisnaher Leitfaden zur Festlegung des Codesystems eines Geschäftssystems, einschließlich Produkt- und Kundencodes. Behandelt eine Entscheidungstabelle...
-
Eine Einführung in ADRs (Architecture Decision Records) — Der minimale Weg, „warum wir es so entworfen haben“ in einem kleinen Team festzuhalten
Code erklärt nie, warum er so geschrieben wurde. Wir zeigen, wie Sie mit einem ADR (Architecture Decision Record) — eine Entscheidung, eine Markdown-Datei — ...
-
Vergessen Sie nicht zu entscheiden, „wie viele Sekunden schnell genug sind“ ── Nichtfunktionale Anforderungen mit IPAs Non-Functional Requirements Grade ordnen
Streitigkeiten wie „es ist zu langsam“ oder „mit dieser Ausfallreaktion haben wir nicht gerechnet“ lassen sich meist auf nichtfunktionale Anforderungen zurüc...
-
Wenn man eine Windows-App besser nicht ins Web migriert: Entscheidungstabelle und die pragmatische Lösung der Aufteilung
Der Wunsch, interne Windows-Anwendungen ins Web zu migrieren, nimmt stetig zu. Doch bei Apps mit Gerätekopplung, lokaler Dateiverarbeitung, Offline-Betrieb o...
-
Wo sollten catch und Logging in der Ausnahmebehandlung stehen?
Um breite catch-Blöcke in tiefen Helpern, doppelte Logs in jeder Schicht und eine Ergebnisumwandlung, die die Ursache verschleiert, zu vermeiden, ordnen wir ...
-
Warum Sie unter Windows Ereigniswarten gegenüber Sleep(1) bevorzugen sollten
Unter Windows hängt die Präzision kurzer timed waits von der Granularität der Systemuhr und vom Scheduling ab. Wer auf das Eintreffen von Arbeit, den Abschlu...
-
Entscheidungstabelle: Nach einer unerwarteten Ausnahme beenden oder fortsetzen?
Wenn eine unerwartete Ausnahme auftritt, ordnet dieser Artikel ein, ob die Anwendung beendet oder fortgesetzt werden sollte – aus der Perspektive von Zustand...
-
Eine Mindest-Sicherheitscheckliste für die Windows-Anwendungsentwicklung
Ordnet für WPF / WinForms / WinUI / C++ / C#-Businessanwendungen die Grundlagen zu Rechten, Signatur, Updates, Geheimnissen, HTTPS, Eingabevalidierung, DLL-L...
-
Was ist der .NET Generic Host? - Das Fundament für DI, Konfiguration und Logging
Wir ordnen die Rolle des Generic Host anhand seiner Beziehung zu DI, Konfiguration, Logging, IHostedService und BackgroundService ein und fassen aus der Prax...
-
Was ist .NET Native AOT? - Der Unterschied zu JIT und Trimming
Wir ordnen ein, was Native AOT ist, anhand der Unterschiede zu JIT, ReadyToRun, self-contained, single-file, trimming und Source Generators, und fassen aus d...
-
Die richtige Wahl unter .NETs drei Timern – PeriodicTimer/Timer/DispatcherTimer
Die Unterschiede zwischen PeriodicTimer, System.Threading.Timer und DispatcherTimer – und wie Sie sie für async-Verarbeitung, ThreadPool-Callbacks und WPF-UI...
-
Warum .NET Generic Host und BackgroundService in Desktop-Apps verwenden
Wie sich Generic Host und BackgroundService nutzen lassen, um Start, periodische Verarbeitung, Beendigung, Logging, Konfiguration und DI in Windows-Tools und...
-
Praxisleitfaden für FileSystemWatcher - Umgang mit verpassten und doppelten Ereignissen
Wir ordnen die Verwendung von FileSystemWatcher und ihre Fallstricke entlang von verpassten Ereignissen, doppelten Benachrichtigungen, Fallen bei der Abschlu...
-
C# async/await-Praxis-Entscheidungstabelle – Task.Run und ConfigureAwait
Dieser Artikel ordnet die Best Practices für C# async/await – I/O-Wartezeiten, CPU-Berechnungen, Task.Run, ConfigureAwait(false) und fire-and-forget – anhand...
-
Praktischer Leitfaden, um auf gewöhnlichem Windows so nah wie möglich an Soft Real-Time heranzukommen
Wir ordnen die Überlegungen zur Stabilisierung von periodischer Verarbeitung und Low-Latency-Verarbeitung auf gewöhnlichem Windows, anhand von Timer-Genauigk...
-
Grundlagen des wechselseitigen Ausschlusses bei der Dateiintegration - Best Practices für Dateisperren und atomare Claims
Wir ordnen den wechselseitigen Ausschluss bei der Dateiintegration entlang von Dateisperren, atomaren Claims, temp -> rename und idempotency und fassen Desig...
-
Einführung in HCP-Charts und MakingHCPChartSkill
Wir erklären, was HCP-Charts sind, und zeigen, wie MakingHCPChartSkill HCP-DSL in deterministisches SVG umwandelt, wie man das Ergebnis liest und wie man es ...