6 ms·
Code Complete is a great book, and I don't think there are any other books out which cover the nuts and bolts in such a thorough way. I also recommend "Rapid D
by anthonyb 15y ago
Code Complete is a great book, and I don't think there are any other books out which cover the nuts and bolts in such a thorough way.
I also recommend "Rapid Development", by the same author. It sounds like a fuzzy, Agilish cliche, but a more accurate title is probably "How not to fuck up your project." All of the usual bugbears are there - technical debt, creeping requirements, gold plating, etc.
- msbarnett 15y ago> Code Complete is a great book, and I don't think there are any other books out which cover the nuts and bolts in such a thorough way. Eh, I don't recommend Code Complete, either, though not for the same reasons as mahmud. You say you don't know of a book "which cover the nuts and bolts in such a thorough way". I can name one that covers almost the same territory: Kernighan and Pike's excellent The Practice of Programming. You could certainly argue that it doesn't cover the same territory in such a "thorough" way, if by thorough we mean "needlessly bloated". The Practice of Programming manages to say, in 288 pages, everything useful that McConnell needs 960 pages to spit out. The Practice of Programming is the last book I can think of that came out of the old tradition of software books that valued concision and clarity of communication above all else. It's short and precise in the way that "The C Programming Language" is short and precise compared to modern PL books. Code Complete is a product of modern software book marketing; it takes forever to say anything, so that it consumes maximum space on a bookstore shelf, and attempts to justify its price in weight rather than ideas.
- anthonyb 15y agoI think that's an unnecessarily harsh review. From looking at the table of contents, it looks to me like Code Complete covers a lot more territory, eg. there doesn't appear to be anything on code reviews in The Practice of Programming. That said, I'm going to have to find a copy of it now and compare them :)
- Argorak 15y agoI loved the size of code complete but the brevity of the content itself. I didn't read from cover to cover, but always had the copy on the table and read a chapter each morning.
- Maro 15y agoNo, there are new, concise book, though I agree they're rare: The Art of Readable Code (by Googlers) http://www.amazon.com/Art-Readable-Code-Dustin-Boswell/dp/0596802293 http://www.amazon.com/Art-Readable-Code-Dustin-Boswell/dp/05...
- Revisor 15y agoHaving read both I have to respectfully but firmly disagree. The code examples in The Practice of Programming are atrocious, and I mean it - they are full of really, really bad naming and arcane abbreviations and thus unreadable code. How is this for readable and maintainable code? (Random code example from The Practice of Programming, copied verbatim letter by letter) /* delname: remove first matching nameval from nvtab */ int delname(char *name) { int i; for (i = 0; i < nvtab.nval; i++) if (strcmp(nvtab.nameval[i].name, name) == 0) { memmove(nvtab.nameval+i, nvtab.nameval+i+1), (nvtab.nval-(i+1)) * sizeof(Nameval); nvtab.nval--; return 1; } return 0; } - Confusing function explanation in a custom format. What is nameval? What is nvtab? - Missing curly braces in the for loop - Confusing long lines (line starting with memmove()) - Confusing inline transformations: nvtab.nameval+i+1, nvtab.nval-(i+1) directly in function arguments. What do they mean? - Bad, bad naming (nvtab, nameval) - Inconsistent case (nameval vs Nameval) This is just ONE RANDOM EXAMPLE, mind you. The book is atrocious, I don't recommend it to anyone. Code Complete is much thicker but that's the only disadvantage. It's not bloated, it's simply more comprehensive, it's consistent and teaches to write actual readable code.
- emidln 15y agoI've never read that book, but I've worked with a lot of C. That code seems perfectly maintainable as an experienced C programmer. - Confusing function explanation in a custom format. What is nameval? What is nvtab? nvtab is obviously a name/value table. nameval is an array of Nameval structures. nval is the count of Nameval structures in nvtab.nameval. - Missing curly braces in the for loop This isn't required by C. It's an often-debated subject in style guides for C. - Confusing long lines (line starting with memmove()) How is that confusing? Lines end when you see a ; that isn't inside a set of parens. - Confusing inline transformations: nvtab.nameval+i+1, nvtab.nval-(i+1) directly in function arguments. What do they mean? What do you mean, "what do they mean"? (int)-((int)+1) seems pretty obvious. Working with memory addresses doesn't seem a foreign concept. - Bad, bad naming (nvtab, nameval) nvtab seems like a reasonable name for a name value table. nameval seems like a reasonable name for something that holds a bunch of Nameval structs. - Inconsistent case (nameval vs Nameval) nameval and Nameval are different. If you used consistent case, the program wouldn't work. nameval is an array containing Namevals. Nameval is a struct. This just seems like a case of you not really understanding C rather than a case of experienced C programmers writing C that other C programmers could maintain.
- kabdib 15y agoI thought that CC was good when it came out, but it's gotten pretty long in the tooth. There needs to be a modern version.