2.8 KiB
Common
- Add your name to COPYING.
- Don't add your name to
AUTHORS
- it's for maintainers. - Add copyright notice in the beginning of changed files except the headers.
- If you change the behavior (even just fix a bug) of libkernaux (stable) or libc, add a record to ChangeLog.
C language
-
Name regular functions (not methods) and variables in lower snake case (example:
foo_bar
). -
Name macros in upper snake case (example:
FOO_BAR
). -
Name types (structures, unions, enumerations and type definitions) in Pascal case (example:
FooBar
). -
Name nested types in Pascal case and with the prefix of the surrounding type in Pascal case, separate type names with underscores (example:
FooBar_CarCdr
). -
Name methods (functions that belong to a specific type) in lower snake case and with the prefix of the type name in Pascal case (example:
FooBar_car_cdr
). -
Name public (defined in the headers and exported as symbols) regular functions (not methods) and variables with the prefix
kernaux_
(example:kernaux_foo_bar
). -
Name public (defined in the headers) macros with the prefix
KERNAUX_
(example:KERNAUX_FOO_BAR
). -
Name public (defined in the headers) types with the prefix
KernAux_
(example:KernAux_FooBar
). -
Name public (defined in the headers) with the prefix
KernAux_
and with the prefix of the surrounding type, separate type names with underscore (example:KernAux_FooBar_CarCdr
). -
Name public (defined in the headers) methods with the prefix
KernAux_
and with the prefix of the type name (example:KernAux_FooBar_car_cdr
). -
Create
typedef
s with the names of relatedstruct
s. Use this name with a prefixstruct
to declare the data itself, withoth the prefix to declare a pointer or an array:
typedef struct FooBar { int car; } *FooBar;
static struct FooBar FooBar_create();
static void FooBar FooBar_init(FooBar foobar);
static void FooBar_do_something(FooBar foobar);
// Initialize:
struct FooBar foobar = FooBar_create();
// or
struct FooBar foobar;
FooBar_init(&foobar);
// Use:
FooBar foobar_ptr = &foobar;
FooBar_do_something(&foobar);
typedef struct FooBar { int car; } FooBar[1];
static struct FooBar FooBar_create();
static void FooBar FooBar_init(FooBar foobar);
static void FooBar_do_something(FooBar foobar);
// Initialize:
FooBar foobar = { FooBar_create() };
// or
FooBar foobar;
FooBar_init(foobar);
// Use:
FooBar_do_something(foobar);
Python
Nothing here yet.
Ruby
Matz's Ruby interpreter
Use RuboCop. See bindings/ruby/.rubocop.yml
mruby
Use RuboCop. See bindings/mruby/.rubocop.yml
Rust
Use rustfmt and Clippy. See bindings/rust/rustfmt.toml