Rubin Yoo
Rubin Yoo

Reputation: 2720

Naming convention when the method signature is the same?

Hi when you have a method with same signature let's say.

void getErrorMessage(int errorCode){

}

void getErrorMessage(int domain){

}

I know I have to change the name or differentiate the parameter but what would be the best way to approach?

---------------------------Edited.

How about for constructor?

For example

public ErrorMessage(int errorCode){
}
public ErrorMessage(int domain){
}

Upvotes: 0

Views: 97

Answers (3)

DJClayworth
DJClayworth

Reputation: 26856

The least dangerous and easiest-to-understand way to do this is:

public class ErrorCode {
    private int intCode;
    ErrorCode(int intCode) {
        this.intCode = intCode;
    }
    int getIntegerCode() {
        return intCode;
    }
}
public class Domain {
    private int domain;
    Domain(int domain) {
        this.domain = domain;
    }
    int getIntegerCode() {
        return domain;
    }
}

Message getErrorMessage(ErrorCode errorCode)

Message getErrorMessage(Domain domain)

Note the classes are immutable. You should probably also override equals. Use these classes everywhere you would have used the integer values.

Now it is impossible to mistake an error code for a domain anywhere in your code. If you mistake one for the other you will get a compiler error, and the compiler will choose the correct implementation of getErrorMessage. You extract the integer value from the object only when you need to perform integer operations on it.

Upvotes: 0

Federico Moretti
Federico Moretti

Reputation: 126

You can add a "ByFoo" to the end of the method, like: getErrorMessageByCode or getErrorMessageByDomain

Upvotes: 1

Fenton
Fenton

Reputation: 250922

You could make the method name explicit:

getErrorByErrorCode(int errorCode)

And

getErrorByDomain(int domain)

Upvotes: 1

Related Questions