Encapsulating transformations in funcs C# with Example



Encapsulating transformations in funcs C# with Example

public class MyObject{ 
public DateTime? TestDate { get; set; } 
public Func DateIsValid = myObject => myObject.TestDate.HasValue && 
myObject.TestDate > DateTime.Now; 
public void DoSomething(){ 
//We can do this: 
if(this.TestDate.HasValue && this.TestDate > DateTime.Now){ 
CallAnotherMethod(); 
} 
//or this: 
if(DateIsValid(this)){ 
CallAnotherMethod(); 
} 
} 
} 
In the spirit of clean coding, encapsulating checks and transformations like the one above as a Func can make your 
code easier to read and understand. While the above example is very simple, what if there were multiple DateTime 
properties each with their own differing validation rules and we wanted to check different combinations? Simple, 
one-line Funcs that each have established return logic can be both readable and reduce the apparent complexity of 
your code. Consider the below Func calls and imagine how much more code would be cluttering up the method: 
public void CheckForIntegrity(){ 
if(ShipDateIsValid(this) && TestResultsHaveBeenIssued(this) && !TestResultsFail(this)){ 
SendPassingTestNotification(); 
} 
} 

0 Comment's

Comment Form