开发者

Subjective usages of 'this' in C# [closed]

开发者 https://www.devze.com 2023-03-09 18:31 出处:网络
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references,or expertise, but this question will likely solicit debate, a
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance. Closed 11 years ago.

I开发者_如何学编程 come from C++ and normally this is rarely used compared to C#. In my experience, the usage of this is strictly limited to scope and/or name resolution.

I have coworkers that insist that using this everywhere makes code "more clear". They essentially depend on it for documentation purposes. I disagree with this usage as it is very subjective, redundant, and practically useless as far as documentation is concerned.

There are cases where I see this.myClassVariable = 100;. In this case, this serves no real use other than (according to my coworkers) to make it very clear that myClassVariable is not a static. This is just one example.

Personally, where ever there are no ambiguities, I use myClassVariable = 100;. This is more clear and I feel honestly that if your variables are well named, code will be self documenting and 'this' is not needed.

What is the general rule of thumb on using 'this'? I'm asking for use cases that go beyond the obvious requirements (such as resolving ambiguities). There are cases where the usage of this is required for code to compile and I'm not necessarily interested in those cases. How do you guys feel about using this for documentation?


If they want to distinguish static variables from private instance variables, why not use a naming convention to distinguish the two, instead of requiring this? For example, for private instance variables, prefix them with an underscore and name them using camel case (e.g. _myVariable). Then, for static variables, use Pascal case with no prefix (e.g. MyStaticVariable). It allows for simple disambiguation between static and instance variables, and doesn't require the extra key strokes and general "ugliness" required for this.


I personally strongly object to this usage. Makes refactoring very hard - if you want to change a variable to a static or a local, you have to go through all usage points and get rid of this..

This usage was possibly motivated by PHP or Python where it's a must.

0

精彩评论

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

关注公众号