Programming Languages - Coding Conventions
"Coding Conventions" = naming, formatting, program construction, etc.
It's important to know the established conventions, so that programs you write will be easy for other programmers to understand.
Coding Convention Quick Lookup
C++ | Java | JavaScript | Python | Go | |
---|---|---|---|---|---|
Formatter | clang-format | google-java-format | prettier | yapf | gofmt |
Indentation | 2 | 2 | 2 | 4 | tab |
Line Length | 80 | 100 | 80 | 80 | no |
Package Name | my::foo_bar | com.foo.mypackage | mypackage | ||
Class Name | ClassName | ClassName | ClassName | ClassName | |
Method Name | MethodName | methodName | methodName | method_name | MyFoo/myFoo |
File Name | file_name.cc | ClassName.java | _ or - |
file_name.py | No _ |
Constant | kConstName | CONST_NAME | CONST_NAME | CONST_NAME | MixedCaps |
Extra Notes
C++
Google C++ Style Guide https://google.github.io/styleguide/cppguide.html
Formatter: clang-format
and set style
to Google
. https://clang.llvm.org/docs/ClangFormatStyleOptions.html VSCode: Clang-format › Language › Cpp: Style
Google recommends kConstName
for constants to avoid conflicts with macros.
namespace name: all lower-case, with words separated by underscores.
Java
Google Java Style Guide https://google.github.io/styleguide/javaguide.html
Formatter: https://github.com/google/google-java-format
Java pakcage name: no word separators (-
or _
), only lowercase letters and digits.
Download and run
$ java -jar ~/lib/google-java-format-1.13.0-all-deps.jar --replace $(git ls-files | grep \.java)
Each source file can contain one public class. The source file's name has to be the name of that class.
Python
It's official: PEP 8 — the Style Guide for Python Code.
- Single Leading Underscore (
_var
): for internal use. (a hint to the programmer only, not enforced by the Python interpreter, except in wildcard imports. - Double Leading Underscore (
__var
): private methods in a class context. Enforced by the Python interpreter. - Single Trailing Underscore (
var_
): to avoid naming conflicts with Python keywords. - Double Leading and Trailing Underscore (
__var__
): special methods defined by the Python language. E.g.__init__
. - Single Underscore (
_
): for temporary or insignificant variables (“don’t care”).
JavaScript
Format: single quote; but use double quote in jsx tags to be consistent with HTML. (e.g. <div className="sidebar" />
)
Airbnb Style Guide https://github.com/airbnb/javascript
Formatter: prettier
Go
Formatter: gofmt
. There's only one way to format Go code, enforced by gofmt
.
No Line Length restrictions (you may see very long lines in go code, expecially function signature).s
Go source code uses MixedCaps
or mixedCaps
(camel case) rather than underscores (snake case) when writing multi-word names.
Words in names that are initialisms or acronyms should have the same case, e.g., URL
or url
but NOT Url
. (This is different from Google's C++ guide.)
Function and method names should not use a Get
or get
prefix, unless the underlying concept uses the word “get”. (This is also quite different from other languages.) Call your string-converter method String
not ToString
.
One-method interfaces are named by the method name plus an -er
suffix or similar modification to construct an agent noun: Reader
, Writer
, Formatter
, CloseNotifier
etc.
Google style guide: https://google.github.io/styleguide/go/
Kotlin
file name: ClassName.kt
.