Visual Studio 2010 Best Practices
()
About this ebook
Peter Ritchie
Peter Ritchie is a retired senior police officer. The real-world authenticity in his novels comes from vast experience gained working in CID, murder squads, Serious and Regional Crime Squads, NCIS London and Europol.
Related to Visual Studio 2010 Best Practices
Related ebooks
Getting Started with Paint.NET Rating: 5 out of 5 stars5/5Modern CSS: Master the Key Concepts of CSS for Modern Web Development Rating: 0 out of 5 stars0 ratingsArchitecting CSS: The Programmer’s Guide to Effective Style Sheets Rating: 0 out of 5 stars0 ratingsBecoming Comfortable with Unity Rating: 0 out of 5 stars0 ratingsSelf Publishing For Passive Income: Browse Category 2020, #1 Rating: 0 out of 5 stars0 ratingsBeginning PBR Texturing: Learn Physically Based Rendering with Allegorithmic’s Substance Painter Rating: 0 out of 5 stars0 ratings3D Modeling and Visualization Second Edition Rating: 0 out of 5 stars0 ratingsPractical Shader Development: Vertex and Fragment Shaders for Game Developers Rating: 0 out of 5 stars0 ratingsHow to Set up Your Office Rating: 3 out of 5 stars3/5CSS Master Rating: 0 out of 5 stars0 ratingsIntroducing 3ds Max 9: 3D for Beginners Rating: 0 out of 5 stars0 ratingsMoviebob's Game Overthinker & Beyond: The Video Game Writing of Bob Chipman Rating: 0 out of 5 stars0 ratingsDo ... Quit Your Day Job Rating: 0 out of 5 stars0 ratingsVersion Control Systems Rating: 0 out of 5 stars0 ratingsJumpstart UIKit: Learn to Build Enterprise-Level, Feature-Rich Websites that Work Elegantly with Minimum Fuss Rating: 0 out of 5 stars0 ratingsGetting started with programming: Professional Training Rating: 0 out of 5 stars0 ratingsCritical Thinking Through Art Unit I Rating: 0 out of 5 stars0 ratingsJump Start PHP Environment: Master the World's Most Popular Language Rating: 0 out of 5 stars0 ratings3D Modeling A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsVideo Game Development A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsMastering the 3D Photography Cha-Cha Rating: 0 out of 5 stars0 ratingsMaking Big Data Work for Your Business: A guide to effective Big Data analytics Rating: 0 out of 5 stars0 ratingsAutodesk 3ds Max Complete Self-Assessment Guide Rating: 0 out of 5 stars0 ratingsBeginning Unreal Engine 4 Blueprints Visual Scripting: Using C++: From Beginner to Pro Rating: 0 out of 5 stars0 ratingsTeach Yourself VISUALLY Web Design Rating: 4 out of 5 stars4/5Art Business - How to Promote Your Art: 1 Rating: 0 out of 5 stars0 ratingsPython for Probability, Statistics, and Machine Learning Rating: 0 out of 5 stars0 ratingsMastering 3D Printing in the Classroom, Library, and Lab Rating: 0 out of 5 stars0 ratingsHumanity's Second Chance: Interactive HTML, Intermediate CSS and Responsive Design (Virtual Boxed Set): Undead Institute Rating: 0 out of 5 stars0 ratingsTime Management: How Do I Find Time? A Guide to Help You Build More Time in Your Life Rating: 0 out of 5 stars0 ratings
Programming For You
Coding All-in-One For Dummies Rating: 4 out of 5 stars4/5Excel : The Ultimate Comprehensive Step-By-Step Guide to the Basics of Excel Programming: 1 Rating: 5 out of 5 stars5/5Learn to Code. Get a Job. The Ultimate Guide to Learning and Getting Hired as a Developer. Rating: 5 out of 5 stars5/5SQL QuickStart Guide: The Simplified Beginner's Guide to Managing, Analyzing, and Manipulating Data With SQL Rating: 4 out of 5 stars4/5Learn PowerShell in a Month of Lunches, Fourth Edition: Covers Windows, Linux, and macOS Rating: 5 out of 5 stars5/5Linux: Learn in 24 Hours Rating: 5 out of 5 stars5/5HTML & CSS: Learn the Fundaments in 7 Days Rating: 4 out of 5 stars4/5Python Data Structures and Algorithms Rating: 5 out of 5 stars5/5SQL All-in-One For Dummies Rating: 3 out of 5 stars3/5Python Programming : How to Code Python Fast In Just 24 Hours With 7 Simple Steps Rating: 4 out of 5 stars4/5Excel 101: A Beginner's & Intermediate's Guide for Mastering the Quintessence of Microsoft Excel (2010-2019 & 365) in no time! Rating: 0 out of 5 stars0 ratingsJavaScript All-in-One For Dummies Rating: 5 out of 5 stars5/5HTML in 30 Pages Rating: 5 out of 5 stars5/5C Programming For Beginners: The Simple Guide to Learning C Programming Language Fast! Rating: 5 out of 5 stars5/5Narrative Design for Indies: Getting Started Rating: 4 out of 5 stars4/5Python: For Beginners A Crash Course Guide To Learn Python in 1 Week Rating: 4 out of 5 stars4/5Python: Learn Python in 24 Hours Rating: 4 out of 5 stars4/5Beginning Programming with C++ For Dummies Rating: 4 out of 5 stars4/5Raspberry Pi Electronics Projects for the Evil Genius Rating: 3 out of 5 stars3/5C All-in-One Desk Reference For Dummies Rating: 5 out of 5 stars5/5Coding with JavaScript For Dummies Rating: 0 out of 5 stars0 ratings
Reviews for Visual Studio 2010 Best Practices
0 ratings0 reviews
Book preview
Visual Studio 2010 Best Practices - Peter Ritchie
Table of Contents
Visual Studio 2010 Best Practices
Credits
About the Author
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers and more
Why Subscribe?
Free Access for Packt account holders
Instant Updates on New Packt Books
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Working with Best Practices
Recommended practices
Intransitive best
practices
Benefits of using practices
Avoiding pragmatic re-use
Reducing technical debt
Not invented here syndrome
Beyond practices
Using katas
Reaching kaizen
Aspects of a practice
Evaluating practices
Documenting practices
Geographic distribution
Team size
Regulatory compliance
Domain complexity
Organizational distribution
Technical complexity
Organizational complexity
Enterprise discipline
Life-cycle scope
Paradigm
Categorization
Creational
Structural
Behavioral
Integration
Procedural
Anti-patterns
In this book
Evolving practices—a collaborative effort
Axiomatic practices
Patterns
Why practices?
An empirical and not a defined process
Cross-cutting concerns
Focus on the value
The power of mantras
Summary
2. Source Code Control Practices
Terminology
Repository
SCC
Edit/merge/commit
Lock/edit/check-in
Trunk
Branch
Fork
Merge
Check-out
Check-in
Changeset
Lock
Commit
Push
Pull
Tag/label
Shelving/shelvesets
Principles
Recommended SCC software evaluation criteria
Workflow model
Total cost of ownership
Integration options
Team dynamics and location
Self or third-party hosting
Authentication
Organizing for source code control
Organizing directory structures
Solution structure
Continuous integration
Branching strategies
Isolation
Ad hoc isolation
Testing isolation
Release isolation
Feature isolation
Team isolation
Commit (check-in) practices
Merge remote changes before commit
Commit frequently
Atomic commits
Occasionally connected source control
Distributed source control
Summary
3. Low-level C# Practices
Working with generics
Limits of generics
Writing sequence and iterator members
Working with lambdas
Working with extension methods
Exception handling
Exceptions to the exception practices
Summary
4. Architectural Practices
Terms
Decoupling
Command Query Separation
Data Transfer Objects (DTO)
Single responsibility
Layering
Data-based applications
Object Relational Mappers (ORMs)
NoSQL
Document databases
Pulling it all together
Distributed architecture
Messaging
Data synchronization and events
DTOs Revisited
Summary
5. Recommended Practices for Deployment
Working with installers
Working with Windows Installer
Uninstalling
Visual Studio Setup and Deployment projects
Setup Wizard
Setup Project
Web Setup Project
Merge Module Project
CAB Project
File System
File types
User interface
Launch conditions
Custom actions
Drawbacks of Setup and Deployment Project
ClickOnce
Windows Installer XML (WiX)
Include files
Fragments
Migrating from Setup and Deployment projects
Integrating into Visual Studio
Setup Project
Merge Module Project
Setup Library Project
Bootstrapper Project
C# Custom Action Project
C++ Custom Action Project
Continuous integration
Silent installations
Testing
Summary
6. Automated Testing Practices
First principles
Related terms
Test-driven development
Red, Green, Refactor
I'm not a tester
Why automated?
Benefits
Continuous verification
Documentation
Caveats
Aspects of good tests
Repeatable
Independent
Verifies one thing
Simple
Readable
Fast
Reliable
Informative
Test naming
Separate test projects or not?
Test styles
Arrange, Act, Assert
Given, When, Then
Test types
State-based testing
Interaction testing
Object-orientation and tests
Fluent interfaces revisited
Mocking
Isolation frameworks
Methodologies
TDD
BDD
Test coverage
Continuous testing
Round-tripping requirements and acceptance
Summary
7. Optimizing Visual Studio
Visual Studio efficiency through configuration
Recommended computer specifications
Multi-monitor
Organizing projects
Organizing windows
Auto-hiding
Toolbars
Exceptional features
Exporting/backing up your custom look and feel
Add-ins and extensions
Productivity Power Tools
Searchable add references dialog
Quick Find
Solution Navigator
Resharper
Visual Studio efficiency through usage
Using the keyboard over the mouse
Dividing up solutions
Macros
Advanced search/replace
Playing nice with source code control
Tracked file in project/solution
Change build action
Solution items
Continuous integration
Tests
Build
Summary
8. Parallelization Practices
Principles
Threading primitives
Threading caveats
Other terminologies
Threads
Thread synchronization
Thread safety
Minding your invariants
Thread synchronization and locking
Locking
Lock-free synchronization
Volatile
Interlocked
Advanced synchronization
Mutex
Semaphore
WaitHandle
Reset events
Asynchronous operations
Asynchronous Design Pattern
Event-based Asynchronous Pattern
Division of labor
Task Parallel Library
Tasks
Execution
Parallelization
Working with Asynchronous Design Pattern
Continuations
Visual Studio 2012 asynchronous programming
The Task-based Asynchronous Pattern
Reactive Extensions
Summary
9. Distributed Applications
Seeking scalability
Design options
Communicating via a database
Messaging pattern
Message queues
Command-query separation
Message bus
Service bus
Cloud
Infrastructure as a Service
Platform as a Service
Software as a Service
TCP/UDP
Debugging
Logging
What to log
Health monitoring
Proactive monitoring
Summary
10. Web Service Recommended Practices
Implementing WCF services
Editing configuration
Hosting
Hosting WCF services in IIS
Windows service WCF self-hosting
WCF self-hosted
Manual testing
Authentication and authorization
Different transport options
ASP.NET Web Services
Authentication and authorization
Summary
Index
Visual Studio 2010 Best Practices
Visual Studio 2010 Best Practices
Copyright © 2011 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: August 2012
Production Reference: 1170812
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84968-716-4
www.packtpub.com
Cover Image by Sandeep Babu (<sandyjb@gmail.com>)
Credits
Author
Peter Ritchie
Reviewers
Ognjen Bajic
Carlos Hulot
Ahmed Ilyas
Ken Tucker
Acquisition Editor
Rashmi Phadnis
Lead Technical Editor
Dayan Hyames
Technical Editors
Manmeet Singh Vasir
Merin Jose
Manasi Poonthottam
Project Coordinator
Joel Goveya
Proofreader
Joel T. Johnson
Indexer
Rekha Nair
Graphics
Valentina D,silva
Manu Joseph
Production Coordinators
Aparna Bhagat
Nitesh Thakur
Cover Work
Aparna Bhagat
Nitesh Thakur
About the Author
Peter Ritchie is a software development consultant. He is the president of Peter Ritchie Inc. Software Consulting Co., a software consulting company in Canada,s National Capital Region, which specializes in Windows-based software development management, process, and implementation consulting.
Peter has worked with clients such as Mitel, Nortel, Passport Canada, and Innvapost, from mentoring, to architecture, to implementation. He has considerable experience in building software development teams and working with startups towards agile software development. Peter,s experience ranges from designing and implementing simple stand-alone applications, to architecting n-tier applications spanning dozens of computers, and from C++ to C#.
Peter is active in the software development community, attending and speaking at various events, as well as authoring various works including Refactoring with Microsoft Visual Studio 2010, Packt Publishing.
There are countless number of people that have contributed to my knowledge and motivation to contribute to the community with projects like this book. In particular, I would like to thank Joe Miller for his sharp eyes and having clearly better editing abilities than mine.
I would also like to thank my wife Sherry for the continued love and support despite all the extra time I had to put into projects like book writing.
I would also like to thank my parents, Helen and Bruce; I still miss you.
About the Reviewers
Carlos Hulot has been working in the IT area for more than 20 years in different capabilities, from software development, project management, to IT marketing, product development, and management. He has worked for multinational companies such as Royal Philips Electronics, Pricewaterhouse Coopers, and Microsoft.
Carlos currently works as an independent IT consultant. He is also a Computer Science lecturer at two Brazilian universities. Carlos holds a Ph.D. in Computer Science and Electronics from the University of Southampton, UK and a B.Sc. in Physics from University of São Paulo, Brazil.
Ahmed Ilyas has a BEng degree from Napier University in Edinburgh, Scotland, having majored in Software development. He has 15 years of professional experience in software development.
After leaving Microsoft, Ahmed ventured into setting up his consultancy company Sandler Ltd. (UK), offering the best possible solutions for a magnitude of industries, and providing real-world answers to those problems. The company uses the Microsoft stack to build these technologies. Being able to bring in the best practices, patterns, and software to its client base for enabling long term stability and compliance in the ever changing software industry, pushing the limits in technology, as well as improving software developers around the globe.
Ahmed has been awarded the MVP in C# by Microsoft three times, for providing excellence and independent real-world solutions to problems that developers face.
Ahmed,s breadth and depth of knowledge has been obtained from his research and from the valuable wealth of information and research at Microsoft. By knowing the fact that 90 percent of the world uses at least one form of Microsoft technology, motivates and inspires him.
Ahmed has worked for a number of clients and employers. With the great reputation that he has, it has resulted in having a large client base for his consultancy company, which includes clients from different industries. From media to medical and beyond. Some clients have included him on their approved contractors/consultants
list. The list includes ICS Solution Ltd. (placed on their DreamTeam portal) and also EPS Software Corp. (based in the USA).
I would like to thank the author and the publisher for giving me the opportunity to review this book. I would also like to thank my client base and especially my colleagues at Microsoft for enabling me to become a reputable leader as a software developer in the industry, which is my passion.
Ken Tucker is a Microsoft MVP (2003 present) in Visual Basic and currently works at Amovius LLC in Melbourne, Florida (FL). He is also the President of the Space Coast .Net User Group and a frequent speaker at Florida Code Camps. Ken be reached at <Ken@VB-Tips.com>.
I'd like to thank my wife Alice-Marie.
www.PacktPub.com
Support files, eBooks, discount offers and more
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt,s online digital book library. Here, you can access, read and search across Packt,s entire library of books.
Why Subscribe?
Fully searchable across every book published by Packt
Copy and paste, print and bookmark content
On demand and accessible via web browser
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Instant Updates on New Packt Books
Get notified! Find out when new books are published by following @PacktEnterprise on Twitter, or the Packt Enterprise Facebook page.
Preface
When you are developing on the Microsoft platform, Visual Studio 2010 offers you a range of powerful tools and makes the entire process easier and faster. After learning it, if you 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 you need to master programming with the .NET Framework. The book goes on to detail several practices involving many aspects of software development with Visual Studio. These practices include debugging, 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, such as project structure, naming, and the different types of automated tests. Topics such as test coverage, continuous testing and deployment, and mocking are included. Although this book uses Visual Studio as an example, you can use these practices with any IDE.
What this book covers
Chapter 1, Working with Best Practices, discusses several motivating factors about why we might want to use recommended practices
and why we’re sometimes forced to resort to recommended practices
rather than figure it out.
Chapter 2, Source Code Control Practices, looks at source code control terminology, architectures, and usage practices.
Chapter 3, Low-level C# Practices, looks at some low-level, language-specific practices. Topics like generics, lambdas, iterator members, extension methods, and exception handling will be detailed.
Chapter 4, Architectural Practices, looks at some architecture-specific practices. These practices will include things such as decoupling, data-centric applications, and a brief look at some recommendations for distributed architectures.
Chapter 5, Recommended Practices for Deployment, discusses installation technologies and covers some of the more common features required by the majority application installations. The chapter focuses mainly on deployment of applications through Windows Installer
Chapter 6, Automated Testing Practices, covers automated testing practices. Practices regarding test naming and structure, coverage, mocking, and types of tests will be covered.
Chapter 7, Optimizing Visual Studio, discusses ways of making Visual Studio operate more efficiently, work to our advantage, and ways to make working with Visual Studio friendlier.
Chapter 8, Parallelization Practices, discusses techniques such as threading, distributed architecture, and thread synchronization. Technologies such as Task Parallel Library, Asynchronous CTP, and asynchronous additions to C# 5.0 and Visual Basic 10 are also covered.
Chapter 9, Distributed Applications, discusses ways of architecting distributed applications, as well as specific technologies that help communication of nodes within a distributed application. In addition, it covers ways of debugging, monitoring, and maintaining distributed applications.
Chapter 10, Web Service Recommended Practices, discusses web services. It covers practices with WCF services, ASMX services, implementing services, consuming services, and authentication and authorization.
What you need for this book
Visual Studio 2010 Express (Professional recommended) or better
Windows XP SP3 or better
Optional: NUnit or XUnit
Who this book is for
.NET developers using Visual Studio for programming will find this book useful. If you are developing your application with C#, you will find better ways to do things with Visual Studio.
You should know basics of development with the .NET Framework and will need working knowledge on Visual Studio.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: The Iterator method returns IEnumerable that results in three DateTime values.
A block of code is set as follows:
public static IEnumerable
{
Thread.Sleep(1000);
yield return DateTime.Now;
Thread.Sleep(1000);
yield return DateTime.Now;
Thread.Sleep(1000);
yield return DateTime.Now;
}
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
namespace ConsoleApplication
{
using Numerical
;
internal class Program
{
private static void Main(string[] args)
{
var values = new int[] {1, 2, 3};
foreach (var v in values.Cubes())
{
Console.WriteLine(v);
}
}
}
}
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: right-click on a project in Solution Explorer and select Unload Project.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book—what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <feedback@packtpub.com>, and mention the book title through the subject of your message.
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, see our author guide on www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Downloading the example code
You can download the example code files for all Packt books you have purchased from your account at http://www.packtpub.com. If you purchased this book elsewhere, you can visit http://www.packtpub.com/support and register to have the files e-mailed directly to you.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books—maybe a mistake in the text or the code—we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the errata submission form link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded to our website, or added to any list of existing errata, under the Errata section of that title.
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <copyright@packtpub.com> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
Questions
You can contact us at <questions@packtpub.com> if you are having a problem with any aspect of the book, and we will do our best to address it.
Chapter 1. Working with Best Practices
In any given software developer's career, there are many different things they need to create. Of the software they need to create, given time constraints and resources, it's almost impossible for them to perform the research involved to produce everything correctly from scratch.
There are all sorts of barriers and roadblocks to researching how to correctly write this bit of code or that bit of code, use that technology, or this interface. Documentation may be lacking or missing, or documentation may be completely wrong. Documentation is the same as software, sometimes it has bugs. Sometimes the act of writing software is unit testing documentation. This, of course, provides no value to most software development projects. It's great when the documentation is correct, but when it's not, it can be devastating to a software project.
Even with correct documentation, sometimes we don't have the time to read all of the documentation and become total experts in some technology or API. We just need a subset of the API to do what we need done and that's all.
Recommended practices
I call them recommended practices
instead of best practices.
The superlative best
implies some degree of completeness. In almost all circumstances, the completeness of these practices has a shelf-life. Some best practices have a very small shelf-life due to the degree to which technology and our knowledge of it changes.
Recommended practices detail working with several different technologies with a finite set of knowledge. Knowledge of each technology will increase in the future, and each technology will evolve in the future. Thus, what may be a best practice today may be out of date, obsolete, and possibly even deprecated sometime in the future.
One of the problems I've encountered with best practices
is the inferred gospel people assume from best. They see best
and assume that means best always and forever.
In software, that's rarely the case. To a certain extent, the Internet hasn't helped matters either. Blogs, articles, answers to questions, and so on, are usually on the Internet forever. If someone blogs about a best practice
in 2002 it may very well have been the recommended approach when it was posted, but may be the opposite now. Just because a practice works doesn't make it a best practice.
Sometimes the mere source of a process, procedure, or coding recipe has the reader inferring best practice.
This is probably one of the most disturbing trends in certain software communities. While a source can be deemed reliable, not everything that a source presents was ever intended to be a best practice
, documentation at best. Be wary of accepting code from reputable sources as best practices.
In fact, read on to get some ideas on how to either make that code one of your recommended practices, or refute it as not being a best practice at all.
Further, some industries or organizations define business practices. They're defined as the one and only practice and sometimes referred to as best
because there is nothing to compare. I would question the use of best
in such a way because it implies comparison with at least one other practice, and that other practice was deemed insufficient in some way. To that end, in software practices, just because there is only one known way to do something, that doesn't mean it should be coined a best practice.
There have been many other people who have questioned best
in best practice.
Take Scott Ambler for example. Scott is a leader in the agile software development community. He is espousing contextual practices
as any given best practice
is limited at least to one context. As we'll see shortly a best practice
may be good in one context but bad in another context.
Best
is a judgment. While the reader of the word best
judges a practice as best through acceptance, in the general case, most best practices
haven't really been judged. For a practice to be best the practice needs to be vetted, and the requisite work involved in proving how and why the practice