diff --git a/contrib/ide/README b/contrib/ide/README new file mode 100644 index 000000000..da819ea1e --- /dev/null +++ b/contrib/ide/README @@ -0,0 +1 @@ +Settings and project files for IDEs and other tools should be stored here. diff --git a/contrib/ide/codeStyle.xml b/contrib/ide/codeStyle.xml new file mode 100644 index 000000000..efb57f4e2 --- /dev/null +++ b/contrib/ide/codeStyle.xml @@ -0,0 +1,44 @@ + + diff --git a/contrib/style.txt b/contrib/style.txt new file mode 100644 index 000000000..d6d96cb7d --- /dev/null +++ b/contrib/style.txt @@ -0,0 +1,49 @@ +TypeScript style +================ + +Basics: +- Indent with 2 spaces. +- Keep a maximum line length of 120 characters. +- Prefer "double quotes" for strings. +- Never omit optional semicolons. +- Do not put opening braces or brackets on a new line. +- Call functions without spaces: foo(bar) +- Use 'let' instead of 'var' whenever possible. +- Declare "use strict;". +- Use rocket (=>) syntax for anonymous functions. If an anonymous function is + too long, make it a named function. +- Use the strict equality operator (===). +- Document functions with JSDoc comments (http://usejsdoc.org). + + +JavaScript version: +Stick to ES6 features. Do not rely on any vendor-specific extensions (such as +Firefox often offers). ES6 features not yet supported by major browsers are +okay as long as there is a well-supported and reasonable polyfill (such as +babel) available. + + +Names: +- Use PascalCase for classes/types, camelCase for variables, functions and + properties, UPPER_SNAKE_CASE for constants, kebab-case for event names. +- Only capitalize the first letter of an acronym in identifiers (e.g. HttpResponseCode). + + +APIs: +- Prefer 'Promise' to one-shot continuations whenever possible. +- Prefer handlebars templates to poking around in the DOM. + + +Dependency Injection (DI): +DI is a useful pattern when components need to be replaced by mocks or have +multiple co-existing implementations. But DI also makes code overly generic, +bureaucratic and less readble. Only use DI if there is a definite need for it, +do not use it by default. Inject individual dependencies via class +constructors and avoid service locators. + + +Misc: +- Do not use ES6 template strings for constructing HTML, + use TSX/JSX literals instead. +- For everything not covered here, stick to this style guide: + https://github.com/airbnb/javascript.