Pascal Case under_scores, camelCase en PascalCase – De drie naamgevingsconventies die elke programmeur zou moeten kennen

De verschillende tokens in je code (variabelen, klassen, functies, namespaces, enz.) kunnen worden benoemd met behulp van een van deze drie stijlen, in grote lijnen:

  1. Camel Case (ex: someVar, someClass, somePackage.xyz).
  2. Pascal Case (ex: someVar, someClass, somePackage.xyz).
  3. Onderscores (ex: some_var, some_class, some_package.xyz).

In camel casing beginnen namen met een kleine letter, maar elk eigen woord in de naam krijgt een hoofdletter en dat geldt ook voor acroniemen. Veelgebruikte tokens in veel talen, zoals toString, checkValidity, lineHeight, timestampToLocalDateTime, enz. zijn allemaal voorbeelden van camel casing.

Pascal casing lijkt op camel casing, behalve dat de eerste letter ook met een hoofdletter begint (SomeClass in plaats van someClass).

In underscore casing staat alles in kleine letters (zelfs acroniemen) en worden de woorden gescheiden door underscores (some_class, some_func, some_var, etc). Deze conventie wordt in de volksmond ook wel snake case genoemd.

Het algemene idee is dat je elke conventie in je project kunt gebruiken, zolang je maar consequent bent in het overal gebruiken ervan. Maar als je codeert voor een groot project of team, moet je je voegen naar de norm van wat daar wordt gebruikt. Daarom is het handig om je bewust te zijn van de conventies die gebruikelijk zijn in verschillende programmeertalen.

De algemene praktijk voor een C-stijl taal als Java of JS is om camelCase te gebruiken voor alle variabelen en object leden (eigenschappen & methodes), en PascalCase voor klasse namen en constructors. Namespaces (of Packages in de Java wereld) zijn meestal in camelCase.

Maar sommige talen maken daar een uitzondering op. C#, bijvoorbeeld, gebruikt PascalCase voor namespaces en zelfs public methods. Vandaar dat de main functie (of het entry point) altijd static void main() is in java maar static void Main() in C# (let op het hoofdlettergebruik van het woord “Main”).

Sommige talen die hun syntax niet van C afleiden (zoals Python & Ruby) gebruiken underscores voor bijna alles behalve class namen. Daarom is het altijd sys.base_prefix in plaats van sys.basePrefixdatetime in plaats van DateTimestr.splitlines() in plaats van str.splitLines() in python.

In het geval van python’s standaard bibliotheek, heb ik gemerkt dat zelfs de klassen soms underscores gebruiken, wat een inconsistentie is. Bijvoorbeeld, datetime.datetime is een class en dat is csv.excel_tab ook. De populaire frameworks en bibliotheken echter (zoals django en flask) gebruiken de camel case voor klassen.

Een soortgelijke inconsistentie is er in PHP. De taal is aan het evolueren van underscores naar camel casing in de afgelopen jaren, maar sommige oude tokens nog steeds achtervolgt die taal. Bijvoorbeeld mysqli::set_local_infile_default vs PDOStatement::debugDumpParams.

Dus uiteindelijk komt het op je eigen voorkeur aan als je aan een project begint. Maar het helpt om te weten wat de gebruikelijke conventies zijn in populaire open source projecten in de taal van je voorkeur.

Update

Er is ook nog een vierde geval, zoals @ovais al aangaf, namelijk kebab-casing. Het lijkt veel op underline casing, behalve dat de onderstrepingen worden vervangen door hyphens (streepjes). Dus, some_func wordt some-func wat uiteraard niet is toegestaan omdat het streepje niet wordt gebruikt voor het benoemen van tokens omdat het al een ingebouwde waarde is voor de min operator in de meeste programmeertalen. Waar kebab case het meest wordt gebruikt is voor het maken van classes in je css stylesheets! Namen zoals main-divmain-navbar en article-footer worden vaak gebruikt door web ontwikkelaars tijdens het schrijven van hun HTML/CSS. Deze conventie is in feite het kebabgeval.

Update

Zoals @patrykrudnicki zegt, worden constanten anders behandeld. Mijn ervaring is dat de volledige underscores (SOME_CONST) een populaire conventie is voor constanten in veel talen, waaronder Java, PHP en Python.

Update

Om kort te gaan, dit is de typische of algemeen gevolgde conventie in de meest gebruikte open source programmeertalen:

Token python Java/JS PHP
variabele onder_score camelCase mix (op weg naar camelCase)
functie onder_score() camelCase() mix (op weg naar camelCase())
constant UNDER_SCORE UNDER_SCORE UNDER_SCORE
klasse PascalCase PascalCase mix (op weg naar PascalCase)
namespace under_score camelCase mix (op weg naar PascalCase)

Enkele nuttige links:

  1. https://softwareengineering.stackexchange.com/questions/196416/whats-the-dominant-naming-convention-for-variables-in-php-camelcase-or-undersc
  2. https://stackoverflow.com/questions/149491/pascal-casing-or-camel-casing-for-c-sharp-code
  3. https://www.c-sharpcorner.com/forums/when-to-use-camel-case-and-pascal-case-c-sharp
  4. https://softwareengineering.stackexchange.com/questions/53498/what-is-the-philosophy-reasoning-behind-cs-pascal-casing-method-names

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *