shlomi-fish-homepage / t2 / philosophy / books-recommends / shlomi-fish-non-fiction-books-recommendations.xml

Diff from to

File t2/philosophy/books-recommends/shlomi-fish-non-fiction-books-recommendations.xml

 ;;; To add:
 * Postfix TDG
 * Refactoring by Fowler.
+* Programming Pearls.
+* More Programming Pearls.
+* The Algorithm Design Manual.
+* chromatic's Modern Perl Book.
+* xUnit Test Patterns.
+* The reviews I did on the Perl Mongers site.
     In the future:
     * CSS TDG
+                    <prod id="refactoring">
+                        <title>Refactoring - Improving The Design of 
+                            Existing Code</title>
+                        <isbn>0201485672</isbn>
+                        <creator type="author">Martin Fowler</creator>
+                        <desc>
+                            <p>
+                                <a href="">Refactoring</a>
+                                is improving the internal design of a
+                                code without changing its external
+                                behaviour. This book is the definitive
+                                guide to refactoring, at least in
+                                object-oriented systems.
+                            </p>
+                            <p>
+                                The first chapters of the book are rather
+                                general. They introduce the motivation
+                                for refactoring, why it is good, and why
+                                it actually speeds up development.
+                                Also, they also give a list of "bad
+                                smells" in the code that indicate that
+                                a refactoring is needed (like
+                                duplicate code or magic numbers). I found
+                                the bad smells part to be the most
+                                illuminating part of the book.
+                            </p>
+                            <p> 
+                                The middle part of the book which is its
+                                lion's share is a catalog of various
+                                refactorings. These are things like extracting
+                                a method, creating a superclass, eliminating
+                                inheritance, or creating one. The author
+                                explains there each refactoring, when to do
+                                it, the steps for performing it most safely,
+                                and then usually gives an example of how to do
+                                it. I found the catalog a bit tedious to read,
+                                but interesting nonetheless. It taught me some
+                                new techniques that I was not previously aware
+                                of.
+                            </p>
+                            <p>
+                                The final chapters wrap up the book, and are
+                                also interesting to read. They consist of an
+                                essay by William Opdyke (who wrote a very
+                                early research paper on refactoring) titled
+                                "Refactoring, Reuse and Reality", a chapter
+                                about <a
+                                    href="">Refactoring
+                                    Tools</a>, and a short summarising chapter
+                                by Kent Beck.  
+                            </p>
+                            <p>
+                                The book smells a bit of hype: Java is used as
+                                the example language (albeit its use
+                                there is quite justified); there are
+                                many UML diagrams (which were at first
+                                confusing to me due to the many kind
+                                of arrows they have); and there are
+                                references of several of the so-called
+                                Design Patterns. (from the Gang of
+                                Four book and otherwise). But they
+                                don't detract much from an otherwise
+                                good book.
+                            </p>
+                            <p>
+                                The book can also
+                                be used as a reference to look for
+                                refactorings or see how can they be
+                                performed well. I think this book has
+                                made me more conscious of how I
+                                refactor and write code, and I try to
+                                refactor in a way that will minimize
+                                the errors caused by it. I'm also now
+                                more aware of the "two hats", as
+                                Fowler puts it, of either refactoring
+                                code or adding new features.
+                            </p>
+                            <p>
+                                To sum, this is a very good and
+                                important book to read, especially for
+                                beginning programmers. I'm just not
+                                sure it justifies the $54.00 list
+                                price. This price is too high for
+                                a book of this scope.
+                            </p>
+                        </desc>
+                    </prod>
                     <prod id="art_of_unix_programming">
                         <title>The Art of UNIX Programming</title>