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