
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
94 lines
1.8 KiB
Plaintext
94 lines
1.8 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Trivial properties, which include no logic but setting and getting a backing field should be converted to auto-implemented properties, yielding cleaner and more readable code.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,csharp]
|
|
----
|
|
public class Car
|
|
{
|
|
private string _make;
|
|
public string Make // Noncompliant
|
|
{
|
|
get { return _make; }
|
|
set { _make = value; }
|
|
}
|
|
}
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,csharp]
|
|
----
|
|
public class Car
|
|
{
|
|
public string Make { get; set; }
|
|
}
|
|
----
|
|
|
|
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Make this an auto-implemented property and remove its backing field.
|
|
|
|
|
|
'''
|
|
== Comments And Links
|
|
(visible only on this page)
|
|
|
|
=== on 16 Dec 2014, 20:40:12 Ann Campbell wrote:
|
|
\[~dinesh.bolkensteyn] what about a property which has logic in one of the methods but not the other?
|
|
|
|
=== on 17 Dec 2014, 06:38:06 Dinesh Bolkensteyn wrote:
|
|
I've tested that yesterday [~ann.campbell.2], it's not possible: There is no way to explicitly access the implicit backing field, so there is no way to add any logic to an auto-property.
|
|
|
|
=== on 17 Dec 2014, 13:01:10 Ann Campbell wrote:
|
|
\[~dinesh.bolkensteyn] I'm not sure I was clear. I'm talking about something like this:
|
|
|
|
----
|
|
private string _make;
|
|
public string Make // Noncompliant
|
|
{
|
|
get { return _make; }
|
|
set
|
|
{
|
|
// do stuff to value...
|
|
_make = value;
|
|
}
|
|
}
|
|
----
|
|
|
|
=== on 17 Dec 2014, 13:05:37 Dinesh Bolkensteyn wrote:
|
|
So you actually mean:
|
|
|
|
|
|
----
|
|
private string _make;
|
|
public string Make
|
|
{
|
|
get { return _make; }
|
|
set
|
|
{
|
|
if (value == null)
|
|
{
|
|
throw new SomeException();
|
|
}
|
|
_make = value;
|
|
}
|
|
}
|
|
----
|
|
|
|
That is perfectly valid and compliant. There is nothing that can be improved there.
|
|
|
|
endif::env-github,rspecator-view[]
|