Case by Language Construct
Keep these headers alphabetized. Maybe each section could become its own page.
C
Linux kernel: https://www.kernel.org/doc/html/v4.10/process/coding-style.html
feature | case
C#
Microsoft: https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/identifier-names
feature | case |
---|---|
types | Pascal |
namespaces | Pascal |
public members | Pascal |
classes | Pascal |
interfaces | Pascal |
structs | Pascal |
delegate | Pascal |
variables | camel |
private members | camel |
Go
Effective Go: https://go.dev/doc/effective_go
feature | case |
---|---|
packages | flat |
public items | Pascal |
private items | camel |
files | snake |
Pascal
From the GNU Pascal Coding Standards: https://www.gnu-pascal.de/h-gpcs-en.html
Flat here often implies that the identifier is only composed of a single word. Maybe “flat” should be distinguished here and instead cite that it should be a single word? But maybe not. Reserved words are already a fixed list that doesn’t change.
feature | case |
---|---|
reserved words | flat |
identifiers | Pascal |
local variables | Pascal or flat |
compiler directives | kebab |
Perl
Official documentation: https://perldoc.perl.org/perlstyle
feature | case |
---|---|
constants | constant |
globals | Ada |
locals | snake |
functions | snake |
methods | snake |
modules | Pascal(?) |
PHP
This doesn’t look comprehensive: https://www.php.net/manual/en/userlandnaming.rules.php
There’s this too: https://www.php-fig.org/psr/psr-1/ and https://infinum.com/handbook/wordpress/coding-standards/php-coding-standards/naming
feature | case |
---|---|
functions | snake |
classes | camel or Pascal |
constants | constant |
methods | camel |
files | kebab or Pascal |
Python
PEP8 of course: https://peps.python.org/pep-0008/#descriptive-naming-styles
feature | case |
---|---|
modules | snake |
packages | flat or snake |
classes | Pascal |
types | Pascal |
globals | snake |
functions | snake |
variables | snake |
arguments | snake |
methods | snake |
constants | constant |
Ruby
This looks official: https://rubystyle.guide/#naming-conventions
feature | case |
---|---|
symbols | snake |
methods | snake |
variables | snake |
classes | Pascal |
modules | Pascal |
files | snake |
directories | snake |
constants | constant |
Rust
Pretty clear: https://rust-lang.github.io/api-guidelines/naming.html
The style guide has more details about how each feature should be formatted or used, but I’ve simplified it here to just align with the most appropriate case.
feature | case |
---|---|
crates | kebab or snake |
modules | snake |
types | Pascal |
traits | Pascal |
enum variants | Pascal |
functions | snake |
methods | snake |
macros | snake |
local variables | snake |
constants | constant |
statics | constant |
type parameters | Pascal |
lifetimes | flat |
Standard ML
This person already wrote an excellent article doing this exact thing, by looking at 8 sources of style guides: https://thebreakfastpost.com/2016/06/11/naming-conventions-in-standard-ml/
His final recommendation is as follows:
feature | case |
---|---|
variables | camel |
types | snake |
datatype constructors | constant |
exceptions | Pascal |
structure | Pascal |
signature | constant |
functor | Pascal |
files | kebab |