开发者

.Net Coding Standards Using a prefix "Is" or "Has" on Method Names

开发者 https://www.devze.com 2023-03-18 05:05 出处:网络
Is it advisa开发者_如何学运维ble to prefix an \"Is\" or a \"Has\" when creating a method that returns a Boolean. My feeling is that this practice is more suited to defining property names.

Is it advisa开发者_如何学运维ble to prefix an "Is" or a "Has" when creating a method that returns a Boolean. My feeling is that this practice is more suited to defining property names.

Say, we have a method like the following has some logic:

bool IsActivePage()  
{  
 // Some logic to determine if the page is active...   
}

Would it be more preferable to rename the method to GetActivePageStatus and then create a boolean property IsActivePage that returns the result of that method.

What is the .NET standard? All opinions will be appreciated?


The Framework Design Guidelines state that you should "give methods names that are verbs or verb phrases" since "typically methods act on data". Properties, on the other hand, should be named "using a noun, noun phrase, or an adjective" and "you can also prefix Boolean properties with Is, Can, or Has, but only where it adds value".

In this case, you are using a method rather than a property, probably since it is either expensive or has some side effects. I suggest you choose the name that provides the most clarity of what the returned value represents. The important part is that you're being consistent and that you're not confusing other developers with your convention.


I would be using

bool IsActivePage
{
  get
  {
    // some logic
  }
}

if the method has no side effects and is inexpensive.

I see no need to have both a method and a property for the same thing.


I vote for your solution: so YES, for methods , I personally think, it's better to have Get..Bla(), cause method intuitively, at least for me, is, not only something that returns a value to me, but also performs some calculations or calls other methods inside it, properties instead, just return value.

"Get" word, to me personally, seems DO SOMETHIGN+RETURN,

instead "Is" : check if this exists.


I think both are defensible. The key is really to think about how standardized a convention like this should be. In general, you should either decide at your team or company level about how to handle cases like this, and then be consistent after that. As long as code you and your company produce is clear to everyone involved, that's what matters.


I would say yes. All methods should start with an action verb to indicate that they do something. Is and Has are more suited for properties.


First, coding conventions are vitally important in any shared development project, or any project you expect to live beyond the first time you ship the code or set it down for a week.

That said, there are a number of .Net coding standards available on the Internet (Google is still your friend) and you should adhere to those documents as best you can. One exception is in a mixed language environment where different languages have different style conventions and you want to create a more common style that covers all of those languages. In that case, you should create a style document and publish it.


Would it be more preferable to rename the method to GetActivePageStatus and then create a boolean property IsActivePage that returns the result of that method.

I would probably not go this route. IMO either

a) the logic is very simple, and you can just put it in the property getter

b) the logic is not very simple, you want to put it in a method BUT NOT hide it inside a property where an unexpecting caller may incur unneeded overhead by using it inappropriately (ie not caching the value if there is significant overhead in calculating it)

0

精彩评论

暂无评论...
验证码 换一张
取 消