Naming

http://josephfitzsimmons.com/the-hardest-problem-in-programming-is-what-to-name-your-variables-and-functions/

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.

Example:

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

Don't:

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

Do:

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.

HolyHandGrenade(product);
DeleteItems(product);

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.