230 likes | 348 Views
ITF11006 .NET. Industrial Programming. Industrial Programming. Guidelines Development Guidelines UX Guidelines Quality Measures Code Metrics Code Analyses Robustness Error handling (exceptions) Resource handling. Guidelines.
E N D
ITF11006 .NET Industrial Programming
Industrial Programming • Guidelines • Development Guidelines • UX Guidelines • Quality Measures • Code Metrics • Code Analyses • Robustness • Error handling (exceptions) • Resource handling
Guidelines • Design Guidelines for Developing Class Libraries(http://msdn.microsoft.com/en-us/library/ms229042.aspx) • Guidelines for Names • Capitalization Conventions(http://msdn.microsoft.com/en-us/library/ms229043(v=vs.100).aspx) • Member Design Guidelines • Choosing Between Properties and Methods(http://msdn.microsoft.com/en-us/library/ms229054.aspx) • Documentation of code
Documentation of code • Documentable Entities • Class / Struct • Method • … • Cannot document Namespace through XML tag • Shows up in • Object Browser • Intellisense • Library Documentation
Documentation of code (cont.) • XML tags(http://msdn.microsoft.com/en-us/library/5ast78ax.aspx) • summary • param • example • code • exception • returns • GhostDoc
Guidelines • Design Guidelines for Developing Class Libraries(http://msdn.microsoft.com/en-us/library/ms229042.aspx) • Guidelines for Names • Capitalization Conventions(http://msdn.microsoft.com/en-us/library/ms229043(v=vs.100).aspx) • Member Design Guidelines • Choosing Between Properties and Methods(http://msdn.microsoft.com/en-us/library/ms229054.aspx) • Documentation of code • UX Guidelines
UX Guidelines • Windows Size • Default • Min • Max • Resizing must work! • Clean layout • Shortcuts • Tab-order
Industrial Programming • Guidelines • Development Guidelines • UX Guidelines • Quality Measures • Code Metrics • Code Analyses • Robustness • Error handling (exceptions) • Resource handling
Code Metrics • Cyclomatic complexity • Structural complexity of code • Calculates number of different code paths • High values requires more unit tests to cover all paths • Class Coupling • Measures the Efferent Coupling, the number of classes this method depends on • High coupling means brittle, likely to change, probably unfocused and lack of responsibility • Lines of Code • Based on IL, so approximate, but better than source • Excludes white space, comments, braces, types etc.
Code Metrics (cont.) • Maintainability Index: • A weighted number based on Halstead volume, cyclomatic complexity and lines of code • Maintainability Index = MAX(0,(171 - 5.2 * ln(Halstead Volume) - 0.23 * (Cyclomatic Complexity) - 16.2 * ln(Lines of Code))*100 / 171) • A green rating is between 20 and 100 and indicates that the code has good maintainability. A yellow rating is between 10 and 19 and indicates that the code is moderately maintainable. A red rating is a rating between 0 and 9 and indicates low maintainability.
Code Metrics • Use MS official sample • “Image slideshow in full screen mode” (http://code.msdn.microsoft.com/CSImageFullScreenSlideShow-79e29568)
Code Analyses • Rule Set • Rule Action • Automatic / Manual execution • Use from Start
Code Analyses – Requirements • Microsoft Minimum Recommended Rules +Microsoft.Naming (All) • HiOf.Net.ruleset
Industrial Programming • Guidelines • Development Guidelines • UX Guidelines • Quality Measures • Code Metrics • Code Analyses • Robustness • Defensive Programming • Error handling (exceptions) • Resource handling
Defensive Programming • Handle anticipated deviations • Missing Directory / File • Lack of database connectivity • Lost database connection • Verify input data • Do not let the user enter erroneous data • Guard against SQL injection • Use SQL procedures / bind variables
Exceptions • Do not throw System.Exception • Inherit from System.Exception • End with Exception
Exceptions • Exception handling • Throwing exceptions • Exception info • Message • InnerException • Library code rethrows/do not catch • Clients shall handle exceptions