You are previewing Visual Studio 2010 Best Practices.
O'Reilly logo
Visual Studio 2010 Best Practices

Book Description

"

Learn and implement recommended practices for the complete software development lifecycle with Visual Studio 2010 with this book and ebook.

  • This book and e-book detail a large breadth of recommended practices in Visual Studio

  • Consolidated reference of varied practices including background and detailed implementations, great for inexperienced and experience developers alike.

  • A guidelines-based set of practices for all aspects of software development from architecture to specific technologies to deployment.

In Detail

When you are developing on the Microsoft platform, Visual Studio 2010 offers you a range of powerful tools and makes the whole process easier and faster. After learning it, if you are think that you can sit back and relax, you cannot be further away from truth. To beat the crowd, you need to be better than others, learn tips and tricks that other don’t know yet. This book is a compilation of the best practices of programming with Visual Studio.

Visual Studio 2010 best practices will take you through the practices that you need to master programming with .NET Framework. The book goes on to detail several practices involving many aspects of software development with Visual Studio. These practices include debugging and exception handling and design. It details building and maintaining a recommended practices library and the criteria by which to document recommended practices.

The book begins with practices on source code control (SCC). It includes different types of SCC and discusses how to choose them based on different scenarios. Advanced syntax in C# is then covered with practices covering generics, iterator methods, lambdas, and closures.

The next set of practices focus on deployment as well as creating MSI deployments with Windows Installer XML (WiX)—including Windows applications and services. The book then takes you through practices for developing with WCF and Web Service.

The software development lifecycle is completed with practices on testing like project structure, naming, and the different types of automated tests. Topics like test coverage, continuous testing and deployment, and mocking are included. Although this book uses Visual Studio as example, you can use these practices with any IDE.

"

Table of Contents

  1. Visual Studio 2010 Best Practices
    1. Table of Contents
    2. Visual Studio 2010 Best Practices
    3. Credits
    4. About the Author
    5. About the Reviewers
    6. www.PacktPub.com
      1. Support files, eBooks, discount offers and more
        1. Why Subscribe?
        2. Free Access for Packt account holders
        3. Instant Updates on New Packt Books
    7. Preface
      1. What this book covers
      2. What you need for this book
      3. Who this book is for
      4. Conventions
      5. Reader feedback
      6. Customer support
        1. Downloading the example code
        2. Errata
        3. Piracy
        4. Questions
    8. 1. Working with Best Practices
      1. Recommended practices
      2. Intransitive "best" practices
      3. Benefits of using practices
        1. Avoiding pragmatic re-use
        2. Reducing technical debt
      4. Not invented here syndrome
      5. Beyond practices
        1. Using katas
        2. Reaching kaizen
        3. Aspects of a practice
        4. Evaluating practices
        5. Documenting practices
          1. Geographic distribution
          2. Team size
          3. Regulatory compliance
          4. Domain complexity
          5. Organizational distribution
          6. Technical complexity
          7. Organizational complexity
          8. Enterprise discipline
          9. Life-cycle scope
          10. Paradigm
          11. Categorization
            1. Creational
            2. Structural
            3. Behavioral
            4. Integration
            5. Procedural
            6. Anti-patterns
          12. In this book
        6. Evolving practices—a collaborative effort
      6. Axiomatic practices
      7. Patterns
      8. Why practices?
        1. An empirical and not a defined process
        2. Cross-cutting concerns
        3. Focus on the value
      9. The power of mantras
      10. Summary
    9. 2. Source Code Control Practices
      1. Terminology
        1. Repository
        2. SCC
        3. Edit/merge/commit
        4. Lock/edit/check-in
        5. Trunk
        6. Branch
        7. Fork
        8. Merge
        9. Check-out
        10. Check-in
        11. Changeset
        12. Lock
        13. Commit
        14. Push
        15. Pull
        16. Tag/label
        17. Shelving/shelvesets
      2. Principles
      3. Recommended SCC software evaluation criteria
        1. Workflow model
        2. Total cost of ownership
        3. Integration options
        4. Team dynamics and location
        5. Self or third-party hosting
        6. Authentication
      4. Organizing for source code control
        1. Organizing directory structures
        2. Solution structure
        3. Continuous integration
      5. Branching strategies
        1. Isolation
        2. Ad hoc isolation
        3. Testing isolation
        4. Release isolation
        5. Feature isolation
        6. Team isolation
      6. Commit (check-in) practices
        1. Merge remote changes before commit
        2. Commit frequently
        3. Atomic commits
      7. Occasionally connected source control
      8. Distributed source control
      9. Summary
    10. 3. Low-level C# Practices
      1. Working with generics
        1. Limits of generics
      2. Writing sequence and iterator members
      3. Working with lambdas
      4. Working with extension methods
      5. Exception handling
        1. Exceptions to the exception practices
      6. Summary
    11. 4. Architectural Practices
      1. Terms
      2. Decoupling
        1. Command Query Separation
        2. Data Transfer Objects (DTO)
        3. Single responsibility
        4. Layering
      3. Data-based applications
        1. Object Relational Mappers (ORMs)
        2. NoSQL
        3. Document databases
        4. Pulling it all together
      4. Distributed architecture
        1. Messaging
        2. Data synchronization and events
          1. DTOs Revisited
      5. Summary
    12. 5. Recommended Practices for Deployment
      1. Working with installers
      2. Working with Windows Installer
        1. Uninstalling
      3. Visual Studio Setup and Deployment projects
        1. Setup Wizard
        2. Setup Project
        3. Web Setup Project
        4. Merge Module Project
        5. CAB Project
          1. File System
          2. File types
          3. User interface
          4. Launch conditions
        6. Custom actions
        7. Drawbacks of Setup and Deployment Project
      4. ClickOnce
      5. Windows Installer XML (WiX)
        1. Include files
        2. Fragments
        3. Migrating from Setup and Deployment projects
        4. Integrating into Visual Studio
          1. Setup Project
          2. Merge Module Project
          3. Setup Library Project
          4. Bootstrapper Project
          5. C# Custom Action Project
          6. C++ Custom Action Project
        5. Continuous integration
      6. Silent installations
      7. Testing
      8. Summary
    13. 6. Automated Testing Practices
      1. First principles
        1. Related terms
        2. Test-driven development
        3. Red, Green, Refactor
          1. I'm not a tester
        4. Why automated?
        5. Benefits
          1. Continuous verification
          2. Documentation
          3. Caveats
        6. Aspects of good tests
          1. Repeatable
          2. Independent
          3. Verifies one thing
          4. Simple
          5. Readable
          6. Fast
          7. Reliable
          8. Informative
      2. Test naming
      3. Separate test projects or not?
      4. Test styles
        1. Arrange, Act, Assert
        2. Given, When, Then
        3. Test types
          1. State-based testing
          2. Interaction testing
      5. Object-orientation and tests
      6. Fluent interfaces revisited
      7. Mocking
        1. Isolation frameworks
      8. Methodologies
        1. TDD
        2. BDD
      9. Test coverage
      10. Continuous testing
      11. Round-tripping requirements and acceptance
      12. Summary
    14. 7. Optimizing Visual Studio
      1. Visual Studio efficiency through configuration
        1. Recommended computer specifications
          1. Multi-monitor
        2. Organizing projects
        3. Organizing windows
          1. Auto-hiding
        4. Toolbars
        5. Exceptional features
        6. Exporting/backing up your custom look and feel
        7. Add-ins and extensions
          1. Productivity Power Tools
            1. Searchable add references dialog
            2. Quick Find
            3. Solution Navigator
          2. Resharper
      2. Visual Studio efficiency through usage
        1. Using the keyboard over the mouse
        2. Dividing up solutions
        3. Macros
          1. Advanced search/replace
        4. Playing nice with source code control
          1. Tracked file in project/solution
            1. Change build action
            2. Solution items
        5. Continuous integration
          1. Tests
          2. Build
      3. Summary
    15. 8. Parallelization Practices
      1. Principles
        1. Threading primitives
        2. Threading caveats
        3. Other terminologies
      2. Threads
      3. Thread synchronization
        1. Thread safety
          1. Minding your invariants
        2. Thread synchronization and locking
          1. Locking
          2. Lock-free synchronization
            1. Volatile
            2. Interlocked
          3. Advanced synchronization
            1. Mutex
            2. Semaphore
            3. WaitHandle
            4. Reset events
      4. Asynchronous operations
        1. Asynchronous Design Pattern
        2. Event-based Asynchronous Pattern
      5. Division of labor
      6. Task Parallel Library
        1. Tasks
        2. Execution
        3. Parallelization
        4. Working with Asynchronous Design Pattern
        5. Continuations
      7. Visual Studio 2012 asynchronous programming
        1. The Task-based Asynchronous Pattern
      8. Reactive Extensions
      9. Summary
    16. 9. Distributed Applications
      1. Seeking scalability
      2. Design options
        1. Communicating via a database
        2. Messaging pattern
          1. Message queues
          2. Command-query separation
          3. Message bus
          4. Service bus
      3. Cloud
        1. Infrastructure as a Service
        2. Platform as a Service
        3. Software as a Service
      4. TCP/UDP
      5. Debugging
      6. Logging
        1. What to log
      7. Health monitoring
        1. Proactive monitoring
      8. Summary
    17. 10. Web Service Recommended Practices
      1. Implementing WCF services
        1. Editing configuration
        2. Hosting
          1. Hosting WCF services in IIS
          2. Windows service WCF self-hosting
          3. WCF self-hosted
        3. Manual testing
        4. Authentication and authorization
        5. Different transport options
      2. ASP.NET Web Services
        1. Authentication and authorization
      3. Summary
    18. Index