Choose variable, function, and file names that clearly describe their purpose, behavior, and content. Names should be self-documenting and avoid ambiguity about what they represent or do.

Key principles:

Example of good descriptive naming:

// Before: unclear behavior
const isIntersecting = ref(false)
function checkShouldPrefetch() { /* ... */ }

// After: clear and descriptive  
const hasIntersected = ref(false)
function shouldPrefetch(): boolean { /* ... */ }

// Before: generic naming
whitelist: string[]

// After: descriptive and inclusive
allowlist: string[]

This approach makes code more maintainable and reduces the need for additional documentation or comments to explain what identifiers represent.