Startseite » Blog » Web Development » 💻 Moderne Namenskonventionen in der Programmierung

💻 Moderne Namenskonventionen in der Programmierung

🧠 – Wann snake_case, wann camelCase, wann mischen?

In der modernen Softwareentwicklung geht es längst nicht mehr darum, eine einzige richtige Schreibweise zu haben.
Vielmehr hängt die Wahl des Namensstils von drei Faktoren ab:

  1. 🧩 Dem System oder Framework, in dem du arbeitest
  2. ⚙️ Der Programmiermethode (prozedural, objektorientiert, funktional)
  3. 👨‍💻 Deinem persönlichen oder Team-Stil

🐍 vs 🐫 – Die zwei Klassiker

StilBeispielBeschreibung
snake_caseget_user_data()Wörter durch Unterstriche getrennt – klassisch, klar lesbar
camelCasegetUserData()Wörter zusammengeschrieben, jedes Wort groß außer das erste
PascalCaseGetUserData()Wie camelCase, aber erster Buchstabe groß – meist für Klassen
UPPER_CASEMAX_FILE_SIZEFür Konstanten, global eindeutig

⚙️ Pro Sprache – was ist üblich?

Sprache / SystemEmpfohlener StilBeispiel
🐘 PHP (WordPress / Moodle / Drupal)snake_caseget_user_meta()
🐘 PHP (Laravel / Symfony / modern OOP)camelCase$user->getUserData()
🟨 JavaScript / TypeScript / React / NodecamelCasegetUserData()
🐍 Pythonsnake_caseget_user_data()
☕ Java / C# / KotlincamelCase (Methoden), PascalCase (Klassen)getUserData(), class UserData
🐹 Go (Golang)CamelCaseGetUserData() (für exportierte Funktionen)

🧱 WordPress & Moodle: warum snake_case

Systeme wie WordPress und Moodle basieren auf älteren PHP-Strukturen mit vielen globalen Funktionen.
Daher ist dort snake_case Standard – besonders bei:

🔹 Hooks
🔹 Actions / Filters
🔹 Callback-Funktionen
🔹 Globalen Helpern

Beispiel:

add_action('init', 'register_custom_post_type');

function register_custom_post_type() {
    // ...
}

👉 Technisch funktioniert camelCase auch,
aber der Core und fast alle Plugins verwenden snake_case.
Deshalb bleibt es hier die richtige Wahl.


🧠 Moderne Mischung = der ideale Mittelweg

✨ „Schreib im Stil des Systems – aber nutze intern moderne Konventionen.“

BereichStilBeispiel
🔸 Hooks / Actions / Filterssnake_caseadd_action('init', 'register_custom_post_type')
🔸 Callback-Funktionensnake_casefunction register_custom_post_type() { ... }
🔸 Klassen / MethodencamelCase + PascalCaseclass UserService { public function registerNewUser() { ... } }
🔸 VariablencamelCase$userName, $emailAddress
🔸 KonstantenUPPER_CASEMAX_UPLOAD_SIZE

Beispiel: Modern gemischt in PHP

// WordPress Hook (muss snake_case bleiben)
add_action('init', 'register_custom_post_type');

// Callback (snake_case)
function register_custom_post_type() {
    $userService = new UserService();
    $userService->registerNewUser('Ali', 'ali@example.com');
}

// Moderne Klasse (camelCase)
class UserService {
    public function registerNewUser($name, $email) {
        // interne Logik
    }
}

🟢 Ergebnis:
Außen kompatibel mit WordPress, innen sauberer, moderner PHP-Code.


🧠 Programmiermethoden und Stilwahl

MethodeTypischer StilBeispiel
Prozedural / funktionalsnake_caseget_user_data()
Objektorientiert (OOP)camelCase / PascalCase$this->getUserData()
Hybrid (z. B. WP + eigene Klassen)MischungHooks: snake_case → intern: camelCase

📂 Dateinamen & Ordnerstruktur

Auch bei Dateinamen gelten klare, aber kontextabhängige Regeln.
Der Stil hängt davon ab, in welcher Sprache oder Umgebung du arbeitest.

💻 Umgebung📄 Empfohlener Stil🧩 Beispiel🧠 Hinweis
🐍 Python (Module)snake_caseuser_service.pyLaut PEP 8, Bindestriche nicht erlaubt (import user-service → Fehler)
🐍 Python (Pakete / PyPI-Namen)kebab-casemy-awesome-packageFür Distributionsnamen (pip install my-awesome-package)
🐘 PHP / WordPress / Moodlesnake_caseuser_service.phpKlassischer PHP-Stil
🐘 PHP (modern OOP / Frameworks)kebab-caseuser-service.phpIn Frameworks wie Laravel oder Symfony üblich
🟨 JavaScript / TypeScript / Node / Reactkebab-caseuser-service.jsURL- und build-freundlich, Standard im Web
Java / C# / KotlinPascalCaseUserService.javaKlassenname = Dateiname
🐹 Go (Golang)snake_caseuser_service.goExportierte Funktionen dagegen in CamelCase

💡 Kurz gesagt:

📄 Dateien & Ordner:

  • 🐍 Python → snake_case
  • 🌐 Web & JS → kebab-case
  • ☕ Klassenbasierte Sprachen → PascalCase

⚙️ Autoloader & Klassennamen

Wenn dein Projekt einen Autoloader verwendet (z. B. PHP PSR-4, Java, C#),
müssen Klassennamen und Dateinamen exakt übereinstimmen,
damit die automatische Lade-Logik funktioniert.

Autoloader suchen Klassen nach ihrem Namespace und Dateipfad –
jede Abweichung (Bindestrich, falsche Großschreibung, anderer Stil) führt zu Fehlern.


🐘 PHP – PSR-4 Beispiel

Klassendefinition:

namespace App\Services;

class UserService {
    public function registerNewUser() { ... }
}

Dateistruktur (PSR-4-konform):

/src
 └── Services
     └── UserService.php

🧠 Der PSR-4-Autoloader sucht automatisch nach einer Datei,
deren Pfad dem Namespace + Klassennamen entspricht:
App\Services\UserService → /src/Services/UserService.php

Wenn die Datei stattdessen user-service.php oder user_service.php hieße,
würde der Autoloader die Klasse nicht finden.


☕ Java / C# / Kotlin – gleiche Logik

public class UserService {
    // ...
}

📄 Dateiname: UserService.java

Java verlangt das explizit:

class UserService is public, should be declared in a file named UserService.java


🧩 Übersicht: Autoloader & Namenskonventionen

Sprache / SystemAutoloader / MechanismusKlassenname = Dateiname?Beispiel
🐘 PHP (PSR-4 / Composer)Namespace-basiert✅ JaApp\Services\UserService → /src/Services/UserService.php
☕ JavaJVM-Classloader✅ JaUserService.java
🧩 C# / .NETCLR / Assemblies⚙️ EmpfohlenUserService.cs
🐍 PythonKein Autoloader, aber Imports⚙️ Modulname = Dateinameimport user_service → Datei user_service.py
🟨 JavaScript / TypeScriptModule-Import⚙️ Empfohlenimport { UserService } from './UserService.js'

💡 Merksatz:

🔧 Wenn dein Projekt Autoloading nutzt,
müssen Klassennamen und Dateinamen exakt übereinstimmen,
inklusive Groß-/Kleinschreibung und Namespace-Struktur.

In dynamischen Sprachen ohne Autoloader (z. B. Python, JS) gilt:
Nutze den Stil, der im System Standard ist – aber bleib konsequent.


✅ Fazit

🧭 Modern heißt heute:
Nicht dogmatisch, sondern kontextbewusst.

🐍 Verwende snake_case, wenn du mit Systemen arbeitest, die darauf basieren (WordPress, Moodle, ältere PHP-Systeme).
🐫 Verwende camelCase für moderne, objektorientierte oder JavaScript-lastige Projekte.
📄 Verwende kebab-case für Dateinamen in Webprojekten oder Framework-Strukturen.
🏛️ Verwende PascalCase, wenn dein Autoloader oder Framework Klassennamen verlangt, die Dateinamen entsprechen.
🎯 Bleib konsequent innerhalb eines Projekts.
⚡ Kombiniere intelligent, wenn du Systeme mischst.


🧾 Kurz zusammengefasst

BereichEmpfohlener StilBeispiel
WordPress / Moodle Hookssnake_caseadd_action('init', 'register_custom_post_type')
Moderne PHP-MethodencamelCase$this->getUserData()
KlassenPascalCaseclass UserService {}
KonstantenUPPER_CASEMAX_UPLOAD_SIZE
VariablencamelCase$userName
Python (Code)snake_caseget_user_data()
Python (Dateien)snake_caseuser_service.py
JavaScriptcamelCasegetUserData()
Dateien (Web / JS)kebab-caseuser-service.js
PHP / Java / C# Klassen-DateienPascalCaseUserService.php

🚀 Fazit in einem Satz

💬 Schreib Code so, dass er aussieht, als hätte ihn jemand geschrieben, der das System verstanden hat.
Nicht zu starr, nicht zu chaotisch – sondern stilbewusst und modern.

,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

error: Content is protected !!