rspec/rules/S2292/csharp/rule.adoc
Fred Tingaud 16f6c0aecf
Inline adoc when include has no additional value (#1940)
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.
2023-05-25 14:18:12 +02:00

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[]