Choose variable, function, and method names that clearly communicate their purpose and behavior. Avoid ambiguous abbreviations, numbered suffixes, double negatives, and names that don’t accurately reflect functionality.

Key principles:

Example:

// Poor naming
func (pmpt *Action) taskEligibleToPreemptOthers(preemptor *api.TaskInfo) (bool, string) {
    podPriority := PodPriority(preemptor.Pod)  // Unclear whose priority
    // ...
}

// Better naming  
func (pmpt *Action) taskEligibleToPreemptOthers(preemptor *api.TaskInfo) (bool, string) {
    preemptorPodPriority := PodPriority(preemptor.Pod)  // Clear ownership
    // ...
}

Clear naming reduces cognitive load, prevents misunderstandings, and makes code self-documenting for future maintainers.