Names should accurately reflect the actual behavior, constraints, and purpose of the code element they represent. Misleading names create confusion and make code harder to understand and maintain.

Key principles:

Example of problematic naming:

// Misleading - contains optional properties despite "Required" in name
export interface RequiredOptions {
  singleAttributePerLine: boolean;
  jsxBracketSameLine?: boolean; // Optional property in "Required" interface
}

Better approach:

// Clear and accurate naming
export interface FormattingOptions {
  singleAttributePerLine: boolean;
  jsxBracketSameLine?: boolean;
}

// Or separate required vs optional
export interface RequiredFormattingOptions {
  singleAttributePerLine: boolean;
}
export interface OptionalFormattingOptions {
  jsxBracketSameLine?: boolean;
}

When reviewing code, ask: “Does this name accurately describe what this element actually does or contains?” Names that contradict their implementation create technical debt and developer confusion.