forked from GitHubMirrors/silverbullet-icalendar
chore(conductor): Add conductor setup files and new track 'timezone_rrule_20260218'
This commit is contained in:
23
conductor/code_styleguides/general.md
Normal file
23
conductor/code_styleguides/general.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# General Code Style Principles
|
||||
|
||||
This document outlines general coding principles that apply across all languages and frameworks used in this project.
|
||||
|
||||
## Readability
|
||||
- Code should be easy to read and understand by humans.
|
||||
- Avoid overly clever or obscure constructs.
|
||||
|
||||
## Consistency
|
||||
- Follow existing patterns in the codebase.
|
||||
- Maintain consistent formatting, naming, and structure.
|
||||
|
||||
## Simplicity
|
||||
- Prefer simple solutions over complex ones.
|
||||
- Break down complex problems into smaller, manageable parts.
|
||||
|
||||
## Maintainability
|
||||
- Write code that is easy to modify and extend.
|
||||
- Minimize dependencies and coupling.
|
||||
|
||||
## Documentation
|
||||
- Document *why* something is done, not just *what*.
|
||||
- Keep documentation up-to-date with code changes.
|
||||
43
conductor/code_styleguides/typescript.md
Normal file
43
conductor/code_styleguides/typescript.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Google TypeScript Style Guide Summary
|
||||
|
||||
This document summarizes key rules and best practices from the Google TypeScript Style Guide, which is enforced by the `gts` tool.
|
||||
|
||||
## 1. Language Features
|
||||
- **Variable Declarations:** Always use `const` or `let`. **`var` is forbidden.** Use `const` by default.
|
||||
- **Modules:** Use ES6 modules (`import`/`export`). **Do not use `namespace`.**
|
||||
- **Exports:** Use named exports (`export {MyClass};`). **Do not use default exports.**
|
||||
- **Classes:**
|
||||
- **Do not use `#private` fields.** Use TypeScript's `private` visibility modifier.
|
||||
- Mark properties never reassigned outside the constructor with `readonly`.
|
||||
- **Never use the `public` modifier** (it's the default). Restrict visibility with `private` or `protected` where possible.
|
||||
- **Functions:** Prefer function declarations for named functions. Use arrow functions for anonymous functions/callbacks.
|
||||
- **String Literals:** Use single quotes (`'`). Use template literals (`` ` ``) for interpolation and multi-line strings.
|
||||
- **Equality Checks:** Always use triple equals (`===`) and not equals (`!==`).
|
||||
- **Type Assertions:** **Avoid type assertions (`x as SomeType`) and non-nullability assertions (`y!`)**. If you must use them, provide a clear justification.
|
||||
|
||||
## 2. Disallowed Features
|
||||
- **`any` Type:** **Avoid `any`**. Prefer `unknown` or a more specific type.
|
||||
- **Wrapper Objects:** Do not instantiate `String`, `Boolean`, or `Number` wrapper classes.
|
||||
- **Automatic Semicolon Insertion (ASI):** Do not rely on it. **Explicitly end all statements with a semicolon.**
|
||||
- **`const enum`:** Do not use `const enum`. Use plain `enum` instead.
|
||||
- **`eval()` and `Function(...string)`:** Forbidden.
|
||||
|
||||
## 3. Naming
|
||||
- **`UpperCamelCase`:** For classes, interfaces, types, enums, and decorators.
|
||||
- **`lowerCamelCase`:** For variables, parameters, functions, methods, and properties.
|
||||
- **`CONSTANT_CASE`:** For global constant values, including enum values.
|
||||
- **`_` Prefix/Suffix:** **Do not use `_` as a prefix or suffix** for identifiers, including for private properties.
|
||||
|
||||
## 4. Type System
|
||||
- **Type Inference:** Rely on type inference for simple, obvious types. Be explicit for complex types.
|
||||
- **`undefined` and `null`:** Both are supported. Be consistent within your project.
|
||||
- **Optional vs. `|undefined`:** Prefer optional parameters and fields (`?`) over adding `|undefined` to the type.
|
||||
- **`Array<T>` Type:** Use `T[]` for simple types. Use `Array<T>` for more complex union types (e.g., `Array<string | number>`).
|
||||
- **`{}` Type:** **Do not use `{}`**. Prefer `unknown`, `Record<string, unknown>`, or `object`.
|
||||
|
||||
## 5. Comments and Documentation
|
||||
- **JSDoc:** Use `/** JSDoc */` for documentation, `//` for implementation comments.
|
||||
- **Redundancy:** **Do not declare types in `@param` or `@return` blocks** (e.g., `/** @param {string} user */`). This is redundant in TypeScript.
|
||||
- **Add Information:** Comments must add information, not just restate the code.
|
||||
|
||||
*Source: [Google TypeScript Style Guide](https://google.github.io/styleguide/tsguide.html)*
|
||||
Reference in New Issue
Block a user