Krzysztof Cwalina Program Manager Microsoft Corporation http://blogs.msdn.com/k cwalina Brad Abrams Product Unit Manager Microsoft Corporation http://blogs.msdn.com/b rada
May 12, 2015
Krzysztof CwalinaProgram ManagerMicrosoft Corporationhttp://blogs.msdn.com/kcwalina
Brad AbramsProduct Unit ManagerMicrosoft Corporationhttp://blogs.msdn.com/brada
Dow Jones Industrial Average
@ 9,000
Dow Jones Industrial Average
@ 9,000
Framework Design Framework Design Artifacts:Artifacts:• PropertiesProperties• Methods Methods • EventsEvents• ConstructorsConstructors
8
public class XmlFile {public class XmlFile { string filename; string filename; Stream data; Stream data; public XmlFile(string filename) { public XmlFile(string filename) { this.data = DownloadData(filename); this.data = DownloadData(filename); }}}}
public XmlFile(string filename) {public XmlFile(string filename) { this.filename = filename; this.filename = filename; } }
lazylazy
public class ArrayList {public class ArrayList { public int Count {get;} public int Count {get;}}}
EmployeeList l = FillList();EmployeeList l = FillList();for (int i = 0; i < l.Length; i++){for (int i = 0; i < l.Length; i++){ if (l.All[i] == x){...}if (l.All[i] == x){...}}}
if (l.GetAll()[i]== x) {...}if (l.GetAll()[i]== x) {...}
public Employee[] All {get{}}public Employee[] All {get{}}
public Employee[] GetAll() {}public Employee[] GetAll() {}
Moral: Use method if the operation is expensive Moral: Use method if the operation is expensive
Calling CodeCalling Code
24
Time to cut…Time to cut…
26
public class TheBase : Object {
public override string ToString() {
return “Hello from the Base";
}
}public class Derived : TheBase {
public override string ToString() {
return “Hello from Derived";
}
}
Derived d = new Derived();Console.WriteLine (d.ToString());
TheBase tb = d;Console.WriteLine (tb.ToString());
Object o = tb;Console.WriteLine (o.ToString());
All Virtual members should define a contractAll Virtual members should define a contractDon’t require clients to have knowledge of Don’t require clients to have knowledge of your overridingyour overridingShould you call the base?Should you call the base?
Barbara Liskov
public interface IComparable { int CompareTo(object obj);}
Careful dependency management is the necessary ingredient to successful evolution of frameworks. Without it, frameworks quickly deteriorate and are forced out of relevance prematurely.
BCLBCL
WPFWPF XMLXML
ReflectionReflection
49Climbing a mountain?Climbing a mountain?
50
Scaling a Scaling a peak?peak?
51Running across a desert?Running across a desert?
Falling into a Falling into a pit?pit?
Read the manual??Read the manual??
PPascalascalCCasing – Each asing – Each word starts with an word starts with an uppercase letteruppercase letter
ccamelamelCCasing – First asing – First word lower case, word lower case, others uppercaseothers uppercase
SCREAMING_CAPSSCREAMING_CAPS – – All upper case with All upper case with underscoresunderscores
public class MemberDoc{ public int CompareTo(object value) public string Name { get;}}
public class CMyClass {public class CMyClass { int CompareTo (object objValue) {..} int CompareTo (object objValue) {..} string lpstrName {get;} string lpstrName {get;} int iValue {get;} int iValue {get;}}}
Brad Abramshttp://blogs.msdn.com/brada
Krzysztof Cwalinahttp://blogs.msdn.com/kcwalina
Please fill out the session evals!
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.