當一個程式員有“潔癖”的時候,它的代碼才會越寫越好。
雖然不敢說自己水平有多高,但是自己寫代碼也越來越染上潔癖,
不允許自己的代碼中有一絲敷衍或者是架構的彆扭。
每個細節都要優美,考慮設計模式。每個邏輯都考慮如何複用,雖然代碼寫起來可能比較慢,但是出自自己手下的代碼一定要是“精品”。
這裡奉上網上一個兄弟提供的WPF中資料繫結的屬性精簡寫法,
本來很長一段,如下。微軟官方代碼產生的例子
public string Password { get { return this.PasswordField; } set { if ((object.ReferenceEquals(this.PasswordField, value) != true)) { this.PasswordField = value; this.RaisePropertyChanged("Password"); } } }
但是可以封裝基類,做到優雅的寫法
private DateTime _updateTime; public DateTime UpdateTime { get { return _updateTime; } set { _updateTime = value; this.NotifyPropertyChanged(p => p.UpdateTime); } }
請看基類
public class PropertyChangedBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public void NotifyPropertyChanged(string propertyName) { if (this.PropertyChanged != null) { this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } } public static class PropertyChangedBaseEx { public static void NotifyPropertyChanged<T, TProperty>(this T propertyChangedBase, Expression<Func<T, TProperty>> expression) where T : PropertyChangedBase { var memberExpression = expression.Body as MemberExpression; if (memberExpression != null) { string propertyName = memberExpression.Member.Name; propertyChangedBase.NotifyPropertyChanged(propertyName); } else throw new NotImplementedException(); } }