DEV Community

Anthony Bañon Arias
Anthony Bañon Arias

Posted on

Stop Forcing Universal Naming Conventions

A few months ago, I published a post advocating for a universal naming convention across all projects.

The idea was simple:

  • snake_case for folders
  • camelCase for files
  • PascalCase for classes
  • Consistency everywhere

At first, it sounded great.

One convention.
One mental model.
No context switching.

But the more technologies I worked with, the more I realized something important:

Professional developers don't force every technology to follow the same style.

They learn the language of each ecosystem.

  • A Python project should feel like Python.
  • A Java project should feel like Java.
  • A React project should feel like React.
  • A Laravel project should feel like Laravel.

The goal isn't to make every codebase look the same.

The goal is to make every codebase feel familiar to the developers who work on it.


🐍 Python (PEP 8)

Element Convention Example
Files snake_case.py user_service.py
Folders snake_case user_management/
Classes PascalCase class UserProfile:
Functions snake_case def get_user():
Variables snake_case user_name = "John"
Constants UPPER_SNAKE_CASE MAX_RETRIES = 3

Frameworks

Framework Files Folders Classes Functions
Django snake_case.py snake_case PascalCase snake_case
Flask snake_case.py snake_case PascalCase snake_case
FastAPI snake_case.py snake_case PascalCase snake_case

Python Rule: If it's not a class, it's probably snake_case.


☕ Java

Element Convention Example
Files PascalCase.java UserService.java
Packages lowercase com.company.users
Classes PascalCase UserController
Interfaces PascalCase UserRepository
Methods camelCase getUserById()
Variables camelCase userName
Constants UPPER_SNAKE_CASE MAX_SIZE

Frameworks

Framework Files Packages Classes Methods
Spring Boot PascalCase.java lowercase PascalCase camelCase

Java Rule: Everything is camelCase except classes (PascalCase) and constants (UPPER_SNAKE_CASE).


📜 PHP (PSR Standards)

Element Convention Example
Files PascalCase.php UserService.php
Classes PascalCase UserController
Methods camelCase getUser()
Variables camelCase $userName
Constants UPPER_SNAKE_CASE MAX_RETRIES

Frameworks

Framework Files Directories Classes Methods
Laravel PascalCase.php PascalCase PascalCase camelCase
Symfony PascalCase.php PascalCase PascalCase camelCase

Laravel Database Conventions

Element Convention Example
Tables snake_case plural users, order_items
Columns snake_case first_name, created_at

PHP Rule: Classes and files are usually PascalCase; methods and variables use camelCase.


🟨 JavaScript & TypeScript

Unlike Python or Java, JavaScript is less strict.

Different frameworks and teams may adopt slightly different conventions.

Element Common Convention Example
Files kebab-case user-service.ts
Folders kebab-case payment-gateway/
Classes PascalCase UserService
Functions camelCase getUser()
Variables camelCase userName
Constants UPPER_SNAKE_CASE MAX_RETRIES

JavaScript Rule: Most projects use camelCase in code and often kebab-case for files and folders.


⚛️ React

Element Convention Example
Components PascalCase UserCard
Component Files PascalCase.tsx UserCard.tsx
Hooks useCamelCase useAuth()
Props camelCase userName
Variables camelCase isLoading

Examples

function UserCard() {
  return <div>User</div>;
}

function useAuth() {}
Enter fullscreen mode Exit fullscreen mode

React Rule: Components are PascalCase; hooks always start with use.


🟢 Vue

Element Convention Example
Components PascalCase UserCard.vue
Composables useCamelCase useAuth()
Variables camelCase userName
Methods camelCase getUser()

Vue Rule: Follow component conventions similar to React.


🔴 Angular

Angular has stronger conventions than most JavaScript frameworks.

Element Convention Example
Components user-card.component.ts user-card.component.ts
Services user.service.ts user.service.ts
Directives highlight.directive.ts highlight.directive.ts
Classes PascalCase UserCardComponent
Methods camelCase getUser()
Variables camelCase userName

Example

export class UserCardComponent {}
Enter fullscreen mode Exit fullscreen mode
<app-user-card></app-user-card>
Enter fullscreen mode Exit fullscreen mode

Angular Rule: Files use kebab-case; classes use PascalCase.


⚡ Universal Conventions

These conventions are widely accepted regardless of language.

Repositories

user-auth-service
inventory-management-api
payment-gateway
Enter fullscreen mode Exit fullscreen mode

Git Branches

feature/add-auth
feature/payment-module
feature/create-user

fix/login-bug
fix/token-validation

hotfix/security-patch
Enter fullscreen mode Exit fullscreen mode

REST API Endpoints

/api/v1/user-orders
/api/v1/payment-history
Enter fullscreen mode Exit fullscreen mode

Environment Variables

DATABASE_URL=
JWT_SECRET=
API_KEY=
REDIS_HOST=
Enter fullscreen mode Exit fullscreen mode

📌 Quick Reference

Technology Files Classes Functions
Python snake_case.py PascalCase snake_case
Django snake_case.py PascalCase snake_case
Flask snake_case.py PascalCase snake_case
FastAPI snake_case.py PascalCase snake_case
Java PascalCase.java PascalCase camelCase
Spring Boot PascalCase.java PascalCase camelCase
PHP PascalCase.php PascalCase camelCase
Laravel PascalCase.php PascalCase camelCase
Symfony PascalCase.php PascalCase camelCase
JavaScript Usually kebab-case.js PascalCase camelCase
TypeScript Usually kebab-case.ts PascalCase camelCase
React PascalCase.tsx PascalCase camelCase
Vue PascalCase.vue PascalCase camelCase
Angular kebab-case.component.ts PascalCase camelCase

🧠 Final Principle

Every ecosystem has already solved its naming conventions.

  • Learn them.

  • Use them.

  • Respect them.

The best naming convention is not the one you invent.
It's the one that every developer in that ecosystem already understands.

📚 References

Top comments (0)