Naming Conventions: What to name a method that returns a boolean?

Coding StyleNaming Conventions

Coding Style Problem Overview


I have an interface in C# that helps retrieving of data from a custom archive on server. The interface looks like this:

public interface IRetrieveData
{
    bool OkToRetrieve(SomeData data); // Method in question...
    bool RetrieveToLocal(SomeData data);
}

This interface is implemented by the clients that retrieve the data to the local database. There are different flavors of clients that have access to each others data. So, when the processing component calls IRetrieveData.OkToRetrieve right before actual retrieve, the call goes to the client code where the decision is made on whether the data should be retrieved or not.

At this point the client can return false and that piece of data is skipped or return true and the processing component calls RetrieveToLocal and send the data to the client which then processes it.

Where I am getting confused is whether to rename the method OkToRetrieve to just Retrieve or CanRetrieve or leave it as OkToRetrieve.

Does anyone have any suggestion?

Coding Style Solutions


Solution 1 - Coding Style

IsRetrievable()

I think that a method that returns a boolean value should be named as a yes-no question.

Solution 2 - Coding Style

Allways name boolean methods with names similar to questions that can be answered Yes or No.

In your case, CanRetrieve would be a good name (just to use your own suggestion).

Solution 3 - Coding Style

How about using the prefix 'should'?

ShouldRetrieve(SomeData data);

Solution 4 - Coding Style

Methods mean action. Therefore, I prefer method names to start with a verb. How about?

CheckIsRetrievable(SomeData data)

Solution 5 - Coding Style

Generally, methods/functions indicate actions so they should prefixed with verbs. e.g. check, get, make, etc.

The common naming convention for boolean variables is to prefix them with helping verbs e.g. is, does, will, can

I would think that the combination of the two conventions would lead to a pretty good, discerning pattern. So getIsRetreivable() or checkIsRetrievable() would look pretty good to me.

Solution 6 - Coding Style

Depends on your use case. I like to prefix them with words such as 'is', 'does' or 'Can': IsSomePropertySoAndSo, DoesNounSupportFeature and as your example CanVerb

Solution 7 - Coding Style

In this specific case, I'd probably name it:

public bool IsReady (SomeData)

Because it more clearly demonstrates what will happen once this returns true.

Solution 8 - Coding Style

if you are doing more checks and isRetrievable() isn't appropriate you could use:

IsValid()

Solution 9 - Coding Style

In Naming conventions, it is written that method name should be verb

Solution 10 - Coding Style

CanRetrieve sounds fine to me. I've seen the Can stem used in Microsoft APIs. The only other real option IMO is IsRetrievable (from Aziz) which somehow seems too linguistically twisted!

Solution 11 - Coding Style

I would prefer isOKToRetrieve or isRetrieveOK over variants without "is" under the convention that functions and methods should be verbs.

Solution 12 - Coding Style

MayRetrieve() could be a better name if the result is determined by the user's permission/access.

IsRetrievable() is more ambiguous, which may be more appropriate if there are other considerations in addition to, or other than, permission.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionashteeView Question on Stackoverflow
Solution 1 - Coding StyleAzizView Answer on Stackoverflow
Solution 2 - Coding StyleeKek0View Answer on Stackoverflow
Solution 3 - Coding Styledannie.fView Answer on Stackoverflow
Solution 4 - Coding StyleMehmet ArasView Answer on Stackoverflow
Solution 5 - Coding StyleCary MeskellView Answer on Stackoverflow
Solution 6 - Coding StylearvimanView Answer on Stackoverflow
Solution 7 - Coding StyleNoon SilkView Answer on Stackoverflow
Solution 8 - Coding StyledavidsleepsView Answer on Stackoverflow
Solution 9 - Coding Styleuser2679146View Answer on Stackoverflow
Solution 10 - Coding StylespenderView Answer on Stackoverflow
Solution 11 - Coding StyleTyler McHenryView Answer on Stackoverflow
Solution 12 - Coding StyleBillyView Answer on Stackoverflow