230 likes | 356 Views
This document provides a thorough set of guidelines for industrial programming, covering essential aspects such as development practices, user experience (UX) considerations, and quality measures. It emphasizes the importance of code metrics, robustness, error handling, and resource management. Additionally, the guidelines include best practices for designing class libraries, naming conventions, and documentation strategies, ensuring maintainable code. The aim is to enhance the overall integrity and usability of software systems in industrial contexts.
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