Professional C__ - Marc Gregoire [415]
Revision or Version: A revision or version is a snapshot of the contents of a file at a specific point in time. Versions represent specific points to which the code can be reverted to, or compared against.
Update or Sync: Updating or synchronizing means that the local copy on the developer’s machine is synchronized with a version on the central server. Note that this may require a merge, which may result in a conflict that needs to be resolved.
Working Copy: The working copy is the local copy on the individual developer’s machine.
Several Source Code Control software solutions are available. Some of them are free, some of them are commercial. The following table lists a few available solutions:
FREE/OPEN-SOURCE COMMERCIAL
LOCAL ONLY SCCS, RCS PVCS
CLIENT/SERVER CVS, Subversion IBM Rational ClearCase, Microsoft Visual SourceSafe, Microsoft Team Foundation Server
DISTRIBUTED Git, Mercurial TeamWare, BitKeeper, Plastic SCM
The preceding list is definitely not an exhaustive list. It’s just a small selection to give you an idea of what’s available.
The authors are not recommending one or the other software solution. Most software companies these days have a Source Code Control solution already in place, which every developer needs to adopt. If this is not the case, the company should definitely invest some time for doing research on the available solutions, and to pick one that suits them. The bottom line is that it will be a maintenance nightmare without any Source Code Control solution in place. Even for your personal projects you might want to investigate the available solutions. If you find one that you like to work with, it will make your life easier. It will automatically keep track of different versions and a history of your changes. This makes it easy for you to change back to an older version if a change didn’t work out the way it was supposed to.
SUMMARY
This chapter has introduced you to several models and methodologies for the software development process. There are certainly many other ways of building software, both formalized and informal. There probably isn’t a single correct method for developing software except the method that works for your team. The best way to find this method is to do your own research, learn what you can from various methods, talk to your peers about their experiences, and iterate on your process. Remember, the only metric that matters when examining a process methodology is how much it helps your team to write code.
The last part of this chapter briefly touched on the concept of Source Code Control. This should be an integral part of any software company, big or small, and can even be beneficial for personal projects at home. There are several Source Code Control software solutions available, so it is recommended that you try out a few and see which of them work for you.
Chapter 24
Writing Efficient C++
WHAT’S IN THIS CHAPTER?
What “efficiency” and “performance” mean
What kind of language-level optimizations you can use
Which design-level guidelines you can follow to design efficient programs
What profiling tools are
The efficiency of your programs is important regardless of your application domain. If your product competes with others in the marketplace, speed can be a major differentiator: Given the choice between a slower and a faster program, which one would you choose? No one would buy an operating system that takes two weeks to boot up, unless it was the only option. Even if you don’t intend to sell your products, they will have users. Those users will not be happy with you if they end up wasting time waiting for your programs to complete tasks.
Now that you understand the concepts of Professional C++ design and coding, and have tackled some of the more complex facilities that the language provides, you are ready to incorporate performance into your programs. Writing efficient programs involves thought at the design level, as well as details at the implementation level. Although this chapter falls late in this