The hardest problem in programming is what to name your variables and functions

Use Intention-Revealing Names

Why it exists, what it does, and how it is used.

Bad code:

int d; // elapse time in days

Clean code:

int elapsedTimeInDays;
int daysSinceCreation;
int daysSinceModification;
int fileAgeInDays;

Avoid Disinformation

Programmers must avoid leaving false clues that obscure the meaning of code.

Ex. Don't refer to a grouping of accounts as an accountList unless it's actually a List. So, accountGroup , bunchOfAccount, or just accounts.

Make Meaningful Distinctions

Programmers create problems for themselves when they write code solely to satisfy a compiler or interpreter.


public static void copyChars(char a1[], char a2[]) {
    for (int i = 0; i < a1.length; i++) {
        a2[i] = a1[i];

How can I know what is a1, and what is a2?

Use Pronounceable Names

This matters because programming is a social activity.

Compare this:

class DtaRcrd102 {
    private Date genymdhms; // generation day, year, moth, day, hour, ...
    private Date modymdhms;
    private final String pszqint = "102";

with this:

class Customer {
    private Date generationTimestamp;
    private Date modificationTimestamp;
    private final String recordId = "102";

Avoid Encodings

Ex. Type Encoding

PhoneNumber phoneString;

Ex. Member Prefixes


public class Part {
    private String m_dsc;
    void setName(String name) {
        m_dsc = name;


public class Part {
    String description;
    void setDescription(String description) {
        this.description = description;

Class (Variables) Names

Use noun.

Method (Function) Names

Use verb.

Don't be Cute

Choose clarity over entertainment value. Say what you mean. Mean what you say.


Which one is more understandable?

Pick One Word per Concept

fetch(), retrieve(), get()
controller, manager, driver

Just pick the best one, don't mix them.