<!--
title: Semantic naming conventions
domain: cloud-infra
topic: Naming Conventions
language: JavaScript
source: aws/aws-sdk-js
updated: 2022-11-03
url: https://awesomereviewers.com/reviewers/aws-sdk-js-semantic-naming-conventions/
-->

Use descriptive, semantic names for all code elements that clearly indicate their purpose and behavior. Follow consistent casing patterns throughout the codebase:

- camelCase for variables, properties, and method names (e.g., 'useDualstack', 'bucketExists')
- PascalCase for class names and type definitions
- When naming functions, prefer names that describe what the function does rather than implementation details (e.g., 'buildMessage' is clearer than 'formatMessage')
- Avoid abbreviations that aren't widely understood (e.g., use 'optionalDiscoveryEndpoint' instead of 'optionalDisverEndpoint')
- When type names conflict with JavaScript primitives, use a prefix (e.g., '_Date') rather than skipping the type definition entirely to prevent runtime errors

```javascript
// Poor naming
function getServiceClock() {
  return new Date(Date.now() + this.config.systemClockOffset);
}

// Better naming
function getSkewCorrectedDate() {
  return new Date(Date.now() + this.config.systemClockOffset);
}

// Poor type handling - skipping shapes that match JavaScript primitives
if (['string', 'boolean', 'number', 'Date', 'Blob'].indexOf(shapeKey) >= 0) {
  return '';
}

// Better type handling - using prefix to preserve shape names
if (['string', 'boolean', 'number', 'Date', 'Blob'].indexOf(shapeKey) >= 0) {
  code += 'export type _' + shapeKey + ' = ' + getTypeMapping(shape.type) + ';\n';
  return code;
}
```
