- no barrel files
- no
voidfor async - use async/effect (exception vscode-window-messages) - no
export *- name exports explicitly - prefer
undefinedover null (unless server requires null) - prefer
undefinedover empty string - prefer map/filter over loops/conditionals
- avoid mutation
- avoid
any - no enums or namespaces (enums compile to weird JS; use string union types instead; exception: interfaces defined outside this repo that we can't change)
- no runtime errors for developer mistakes (use types to ensure exhaustive switch/case; don't throw for null/undefined when input/consumer is within our control)
- .ts filenames: camelCase, no hyphens, no leading capitals
- preserve comments when refactoring; remove/fix if wrong/obsolete
- exported functions: single-line jsdoc /*_ foo _/ if name unclear; no params/return (TS provides types)
- look for uses of (Object|Map).groupBy instead of older patterns
- redundant empty-collection guards: if
arr.find/some/every/map/filter/reducealready returns the same value for an empty array, drop theif (arr.length === 0) return …guard. e.g.findon[]isundefined, so guardingreturn undefinedis dead code. - no needless const declarations: return directly instead of
const x = val; return x(exception: complex expressions where const improves readability)
Source: forcedotcom/salesforcedx-vscode — distributed by TomeVault.