Book recommendations

Started by
8 comments, last by Anri 18 years, 8 months ago
Hi, Here's my problem. I'm a relatively inexperienced programmer and, unfortunately, a "code first, design later" kind of guy. That CAN'T be a good thing. I'm trying to write a rather complex military simulation at the moment, and have dived right into the coding with only a hazy conception of what the game engine should look like, the various classes and their interrelationships, etc. I know this approach is going to end up in much wasted effort, backtracking and general demoralization. I know the better approach is to sit down with either pen and paper or some kind of modeling software and think through the basic and intermediate design first. Can anyone recommend some good books with advice and methodologies for the design stage? I just got "Code Complete," but from a quick skim it appears oriented more toward programming, rather than design. Thanks. Marc
Advertisement
What language are you using? If you're using C++, I suggest you read Modern C++ Design, which covers many advanced features of C++ template use. Looking at the other books advertised in it, it seems to be part of a very good series, but I haven't gotten to the other books yet.

Code Complete has been suggested to me as a good book on code-level design. I've just started it, but so far the first few things it is covering seem like common sense to me. The first few chapters might help you, though, if you don't have much experience. It does look like later chapters will be much more informative, but I don't want to skip ahead and chance missing something.

Design Patterns is a third book that has been suggested here previously. I've bought it, but haven't gotten to it yet. It covers common ways to solve common problems in elegant C++.
"Walk not the trodden path, for it has borne it's burden." -John, Flying Monk
I'm programming in C++ (with MS VC++ 6.0). The Alexandrescu book you linked appears to be more programming-related than design related (as is "Code Complete"). What I'm looking for is something oriented towards the design stage (although, obviously, understanding of programming concepts is necessary at the design stage as well). A book with some sound practical advice on how to analyze program requirements, use cases, program flow, class design, etc. I'm certainly going to procure "Design Patterns" one of these days, but that book appears to have a somewhat narrower focus than what I'm thinking of.
Check out this book.
I think you should seriously check out both the UML book and the design patterns book. The UML book will be invaluable in telling HOW to design your system, but if you are a program first, design later kind of guy then you will need some pointers on WHAT to design.

The design patterns book is so useful, there are so many things in there that will make your life easier if you build them into your design from scratch, things that you probably didn't even think about (or know were even possible!)

Best of Luck, hope everything goes to plan :P
One thing I can suggest is that before you start designing, and long before you start coding, you should make a list of all of the things you want your program to do. That includes major and minor functionality, problems you might encounter/things you don't already know how to do, and any tool you'll need to develop. Having all of your ideas written down makes it way easier to design the software.
-------------------------------See my tutorial site: Click here
Quote:Original post by MDF
I'm programming in C++ (with MS VC++ 6.0). The Alexandrescu book you linked appears to be more programming-related than design related (as is "Code Complete"). What I'm looking for is something oriented towards the design stage (although, obviously, understanding of programming concepts is necessary at the design stage as well). A book with some sound practical advice on how to analyze program requirements, use cases, program flow, class design, etc. I'm certainly going to procure "Design Patterns" one of these days, but that book appears to have a somewhat narrower focus than what I'm thinking of.
Well, I agree they're very code oriented (as I said, they're about code design and not project design), but I think that going bottom up (you already know how to code, so next to code design then last to project design) is a good way to go because project design is really only needed for BIG projects (though of course it can be helpful for medium sized projects also) and unless you have a large team you're probably working on medium or small projects.
Since I'm following the approach I mentioned above, I don't know of any good system anaylsis and design books. Sorry.
"Walk not the trodden path, for it has borne it's burden." -John, Flying Monk
well maybe you're just a natural talent with TestDrivenDevelopment :) There's a multitude of reasons why BigDesignUpFron can be a quite bad thing.

But if you want some sane advice on how to structure things then the mentioned Code Complete is one excellent read also have a look at Large Scale C++ Software Design it's a bit old but an excellent read.
HardDrop - hard link shell extension."Tread softly because you tread on my dreams" - Yeats
Thanks for the recommendations, guys. I just ordered "UML and the Unified Process," which appears to be the closest thing to what I need right now. Really, my problem is twofold right now. First, I'm generally somewhat impulsive and disorganized. Second, I'm trying to create a fairly sophisticated military simulation, and don't have a very firm conception of even the simulation "rules", let alone the software design to implement the simulation. I really just need a good practical framework with which to impose some self-discipline.
Ian Sommerville's book "Software Engineering" is a good place to start IMHO.

I have a ruthless approach to design. I write down what I want the program to do(Requirements) and keep the whole thing as simple as possible. Ditch any features that are "fads" - you cannot write a program to do anything but what it was supposed to do. That way you keep bugs to a minimum.

Like you say, it all comes down to whipping out the pen'n'paper than launching .NET...

Languages; C, Java. Platforms: Android, Oculus Go, ZX Spectrum, Megadrive.

Website: Mega-Gen Garage

This topic is closed to new replies.

Advertisement