diff --git a/README.md b/README.md index 20f2d50..29f7664 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # DHBW 2025: Web Engineering Prüfungsleistung -**Maximale Punktzahl: 100 Punkte** +**Maximale Basispunktzahl: 100 Punkte + bis zu 15 Bonuspunkte** --- -## 1. Grundanforderungen (insg. 30 Punkte) +## 1. Grundanforderungen (30 Punkte) -### Projektgrundlagen (15/30 Punkte) +### Projektgrundlagen (15 Punkte) - **Funktionsfähige Anwendung** (8 Punkte) - Webapp oder Backend-Anwendung läuft fehlerfrei - Kernfunktionalitäten sind in der Projektdokumentation beschrieben und testbar @@ -17,7 +17,7 @@ - README.md mit Installation, Verwendung und Technologie-Stack - Kurze Erklärung der Hauptfunktionen am Anfang relevanter Dateien -### Präsentation (15/30 Punkte) +### Präsentation (15 Punkte) - **Elevator Pitch** (5 Punkte) - Maximal 1 Minute - Welches Problem wird gelöst und warum wurde es vorher noch nicht gelöst? @@ -25,7 +25,7 @@ - **Technische Präsentation** (5 Punkte) - PowerPoint/Folien mit Technologie-Stack - Live-Demo der Anwendung -- **Projektevolution:** (5 Punkte) +- **Projektevolution** (5 Punkte) Jedes Projekt verläuft unterschiedlich. Sofern es zutrifft, beschreibt die unterschiedlichen Phasen des Projekts. *Wie weit seid ihr gekommen? Wo waren die Stolpersteine? Wie könnte sich eure Anwendung bei fortgesetzter Arbeit entwickeln?* @@ -37,9 +37,9 @@ --- -## 2. Clean Code Prinzipien (insg. 30 Punkte) +## 2. Clean Code Prinzipien (25 Punkte) -### Projektstruktur (10/30 Punkte) +### Projektstruktur (10 Punkte) - **Ordnerstruktur** (5 Punkte) ``` projekt/ @@ -64,9 +64,9 @@ - Ein Konzept pro Datei (Single Responsibility) - Konsistente Namenskonventionen: `kebab-case` für Dateien, `camelCase` für Variablen, `PascalCase` für Komponenten/Klassen -### Code-Qualität (10/30 Punkte) +### Code-Qualität (10 Punkte) -#### KISS Prinzip (2 Punkte) +#### KISS Prinzip (3 Punkte) **❌ Nicht so einfach:** ```javascript @@ -85,23 +85,7 @@ function calculateActiveTotal(data) { } ``` -**❌ Nicht so einfach:** -```javascript -const u = users.find(u => u.id === id && u.active && !u.deleted) || null; -``` - -**✅ Einfach:** -```javascript -function findActiveUser(users, userId) { - return users.find(user => - user.id === userId && - user.active && - !user.deleted - ) || null; -} -``` - -#### Beschreibende Namen (2 Punkte) +#### Beschreibende Namen (3 Punkte) **❌ Schlecht:** ```javascript @@ -117,21 +101,7 @@ let userProfiles = []; function calculateTotalPrice(price, taxRate) { return price * taxRate; } ``` -**❌ Unklar und uneindeutig:** -```javascript -const btn = document.getElementById('btn'); -let flag = false; -function process(items) { /* ... */ } -``` - -**✅ Sprechende Variablennamen:** -```javascript -const submitButton = document.getElementById('submit-btn'); -let isFormValid = false; -function validateUserInput(formData) { /* ... */ } -``` - -#### Funktionsverantwortlichkeiten (5 Punkte) +#### Funktionsverantwortlichkeiten (4 Punkte) **❌ Zu viele Verantwortlichkeiten:** ```javascript @@ -163,7 +133,7 @@ function sendWelcomeEmail(email) { } ``` -### Kommentierung & Dokumentation (5/30 Punkte) +### Kommentierung & Dokumentation (5 Punkte) **JSDoc ist optional und der beste Code muss nicht kommentiert werden.** **❌ Über-/Unterkommentiert:** @@ -193,40 +163,11 @@ function calculateCompoundInterest(principal, rate, time) { } ``` -**❌ Unterkommentiert:** -```javascript -function x(a,b,c,d,e) { - return a*b+c-d/e; -} -``` - -**✅ Mit JSDoc dokumentiert:** -```javascript -/** - * Calculates shipping cost based on weight, distance and priority - * @param {number} weight - Package weight in kg - * @param {number} distance - Delivery distance in km - * @param {boolean} isPriority - Priority delivery flag - * @returns {number} Total shipping cost - */ -function calculateShippingCost(weight, distance, priority) { - const baseCost = weight * 2.5; - const distanceCost = distance * 0.1; - const priorityMultiplier = priority ? 1.5 : 1; - return (baseCost + distanceCost) * priorityMultiplier; -} -``` - -### Live-Demo (5/30 Punkte) - - Anwendung läuft während der Präsentation stabil - - Alle Kernfunktionen werden erfolgreich vorgeführt - - Ungefähr 5 Minuten Demo-Zeit - --- -## 3. Accessibility & UX (25 Punkte insg.) +## 3. Accessibility & UX (25 Punkte) -### Web Accessibility (15/25 Punkte) +### Web Accessibility (15 Punkte) #### Semantisches HTML (5 Punkte) @@ -307,7 +248,7 @@ div.clickable:focus {