Code Reading

The Open Source Perspective

Specificaties
E-book, blz. | Engels
Pearson Education | e druk, 2021
ISBN13: 9780672334269
Rubricering
Juridisch :
Pearson Education e druk, 2021 9780672334269
Verwachte levertijd ongeveer 9 werkdagen

Samenvatting

If you are a programmer, you need this book. You've got a day to add a new feature in a 34,000-line program: Where do you start? Page 333 How can you understand and simplify an inscrutable piece of code? Page 39 Where do you start when disentangling a complicated build process? Page 167 How do you comprehend code that appears to be doing five things in parallel? Page 132

You may read code because you have to--to fix it, inspect it, or improve it. You may read code the way an engineer examines a machine--to discover what makes it tick. Or you may read code because you are scavenging--looking for material to reuse.

Code-reading requires its own set of skills, and the ability to determine which technique you use when is crucial. In this indispensable book, Diomidis Spinellis uses more than 600 real-world examples to show you how to identify good (and bad) code: how to read it, what to look for, and how to use this knowledge to improve your own code.

Fact: If you make a habit of reading good code, you will write better code yourself.

Specificaties

ISBN13:9780672334269
Taal:Engels
Bindwijze:e-book

Inhoudsopgave

<br> <br> Foreword. <br> <br> <br> Preface. <br> <br> <br> 1. Introduction. <br> <p> </p> <div style="margin-left: 0.2in;"> Why and How to Read Code. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code as Literature. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code as Exemplar. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Maintenance. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Evolution. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Reuse. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Inspections. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> How to Read this Book. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Typographical Conventions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Diagrams. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Exercises. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Supplementary Material. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Tools. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Outline. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Great Language Debate. </div> <p></p> <br> <br> 2. Basic Programming Elements. <br> <p> </p> <div style="margin-left: 0.2in;"> A Complete Program. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Functions and Global Variables. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> While, Conditions, Blocks. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Switch. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> For. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Break, Continue. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Character and Boolean Expressions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Goto. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Refactoring in the Small. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Do, Integer Expressions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Control Structures Revisited. </div> <p></p> <br> <br> 3. Advanced C Data Types. <br> <p> </p> <div style="margin-left: 0.2in;"> Pointers. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Linked Data Structures. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Dynamic Allocation of Data Structures. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Call by Reference. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Data Element Access. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Arrays as Arguments and Results. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Function Pointers. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Pointer as an Alias. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Pointers and Strings. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Direct Memory Access. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Structures. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Grouping Together Data Elements. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Returning Multiple Data Elements from a Function. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Mapping the Organization of Data. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Programming in an Object-Oriented Fashion. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Unions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Efficient Use of Storage. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Implementing Polymorphism. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Accessing Different Internal Representations. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Dynamic Memory Allocation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Managing Free Memory. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Structures with Dynamically-Allocated Arrays. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Typedef Declarations. </div> <p></p> <br> <br> 4. C Data Structures. <br> <p> </p> <div style="margin-left: 0.2in;"> Vector. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Matrix and Table. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Stack. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Queue. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Map. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Hash Tables. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Set. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Linked List. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Tree. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Graph. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Node Storage. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Edge Representation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Edge Storage. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Graph Properties. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Hidden Structures. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Other Representations. </div> <p></p> <br> <br> 5. Advanced Control Flow. <br> <p> </p> <div style="margin-left: 0.2in;"> Recursion. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Exceptions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Parallelism. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Hardware and Software Parallelism. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Control Models. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Thread Implementations. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Signals. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Nonlocal Jumps. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Macro Substitution. </div> <p></p> <br> <br> 6. Tackling Large Projects. <br> <p> </p> <div style="margin-left: 0.2in;"> Design and Implementation Techniques. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Project Organization. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Build Process and Makefiles. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Configuration. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Revision Control. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Project-Specific Tools. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Testing. </div> <p></p> <br> <br> 7. Coding Standards and Conventions. <br> <p> </p> <div style="margin-left: 0.2in;"> File Names and Organization. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Indentation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Formatting. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Naming Conventions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Programming Practices. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Process Standards. </div> <p></p> <br> <br> 8. Documentation. <br> <p> </p> <div style="margin-left: 0.2in;"> Documentation Types. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Reading Documentation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Documentation Problems. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Additional Documentation Sources. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Common Open-Source Documentation Formats. </div> <p></p> <br> <br> 9. Architecture. <br> <p> </p> <div style="margin-left: 0.2in;"> System Structures. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Centralized Repository and Distributed Approaches. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Data-Flow. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Object-Oriented. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Layered. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Hierarchies. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Slicing. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Control Models. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Event-Driven Systems. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> System Manager. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> State Transition. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Element Packaging. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Module. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Namespace. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Object. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Generic Implementation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Abstract Data Type. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Library. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Process and Filter. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Component. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Data Repository. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Architecture Reuse. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Frameworks. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code Wizards. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Design Patterns. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Domain-Specific Architectures. </div> <p></p> <br> <br> 10. Code-Reading Tools. <br> <p> </p> <div style="margin-left: 0.2in;"> Regular Expressions. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Editor as a Code Browser. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code Searching With Grep. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Locating File Differences. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Roll your Own Tool. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> The Compiler as a Code-Reading Tool. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code Browsers and Beautifiers. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Run-Time Tools. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Non-software Tools. </div> <p></p> <br> <br> 11. A Complete Example. <br> <p> </p> <div style="margin-left: 0.2in;"> Overview. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Attack Plan. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Code Reuse. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Testing and Debugging. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Documentation. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Observations. </div> <p></p> <br> <br> Appendix A. Outline of the Code Provided. <br> <br> <br> Appendix B. Source Code Credits. <br> <br> <br> Appendix C. Referenced Source Files. <br> <br> <br> Appendix D. Source Code Licenses. <br> <p> </p> <div style="margin-left: 0.2in;"> BSD. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> X. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> ACE. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Apache. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> DemoGL. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> OpenCL. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> ArgoUML. </div> <p></p> <p> </p> <div style="margin-left: 0.2in;"> Perl. </div> <p></p> <br> <br> Appendix E. Maxims for Reading Code. <br> <br> <br> Bibliography. <br> <br> <br> Index. <br> <br> <br> Author Index. <br>

Net verschenen

Rubrieken

Populaire producten

    Personen

      Trefwoorden

        Code Reading