Bad Programming Practices 101


Book Description

This book takes a humorous slant on the programming practice manual by reversing the usual approach: under the pretence of teaching you how to become the world’s worst programmer who generally causes chaos, the book teaches you how to avoid the kind of bad habits that introduce bugs or cause code contributions to be rejected. Why be a code monkey when you can be a chaos monkey? OK, so you want to become a terrible programmer. You want to write code that gets vigorously rejected in review. You look forward to reading feedback plastered in comments like "WTF???". Even better, you fantasize about your bug-ridden changes sneaking through and causing untold chaos in the codebase. You want to build a reputation as someone who writes creaky, messy, error-prone garbage that frustrates your colleagues. Bad Programming Practices 101 will help you achieve that goal a whole lot quicker by teaching you an array of bad habits that will allow you to cause maximum chaos. Alternatively, you could use this book to identify those bad habits and learn to avoid them. The bad practices are organized into topics that form the basis of programming (layout, variables, loops, modules, and so on). It's been remarked that to become a good programmer, you must first write 10,000 lines of bad code to get it all out of your system. This book is aimed at programmers who have so far written only a small portion of that. By learning about poor programming habits, you will learn good practices. In addition, you will find out the motivation behind each practice, so you can learn why it is considered good and not simply get a list of rules. What You'll Learn Become a better coder by learning how (not) to program Choose your tools wisely Think of programming as problem solving Discover the consequences of a program’s appearance and overall structure Explain poor use of variables in programs Avoid bad habits and common mistakes when using conditionals and loops See how poor error-handling makes for unstable programs Sidestep bad practices related specifically to object-oriented programming Mitigate the effects of ineffectual and inadequate bug location and testing Who This Book Is For Those who have some practical programming knowledge (can program in at least one programming language), but little or no professional experience, which they would like to quickly build up. They are either still undergoing training in software development, or are at the beginning of their programming career. They have at most 1-2 years of professional experience.




Bad Programming Practices 101


Book Description

This book takes a humorous slant on the programming practice manual by reversing the usual approach: under the pretence of teaching you how to become the world's worst programmer who generally causes chaos, the book teaches you how to avoid the kind of bad habits that introduce bugs or cause code contributions to be rejected. Why be a code monkey when you can be a chaos monkey? OK, so you want to become a terrible programmer. You want to write code that gets vigorously rejected in review. You look forward to reading feedback plastered in comments like "WTF???". Even better, you fantasize about your bug-ridden changes sneaking through and causing untold chaos in the codebase. You want to build a reputation as someone who writes creaky, messy, error-prone garbage that frustrates your colleagues. Bad Programming Practices 101 will help you achieve that goal a whole lot quicker by teaching you an array of bad habits that will allow you to cause maximum chaos. Alternatively, you could use this book to identify those bad habits and learn to avoid them. The bad practices are organised into topics that form the basis of programming (layout, variables, loops, modules, and so on). It's been remarked that to become a good programmer, you must first write 10,000 lines of bad code to get it all out of your system. This book is aimed at programmers who have so far written only a small portion of that. By learning about poor programming habits, you will learn good practices. In addition, you will find out the motivation behind each practice, so you can learn why it is considered good and not simply get a list of rules. You will: Become a better coder by learning how (not) to program Choose your tools wisely Think of programming as problem solving Discover the consequences of a program's appearance and overall structure Explain poor use of variables in programs Avoid bad habits and common mistakes when using conditionals and loops See how poor error-handling makes for unstable programs Sidestep bad practices related specifically to object-oriented programming Mitigate the effects of ineffectual and inadequate bug location and testing.




C++ Coding Standards


Book Description

Consistent, high-quality coding standards improve software quality, reduce time-to-market, promote teamwork, eliminate time wasted on inconsequential matters, and simplify maintenance. Now, two of the world's most respected C++ experts distill the rich collective experience of the global C++ community into a set of coding standards that every developer and development team can understand and use as a basis for their own coding standards. The authors cover virtually every facet of C++ programming: design and coding style, functions, operators, class design, inheritance, construction/destruction, copying, assignment, namespaces, modules, templates, genericity, exceptions, STL containers and algorithms, and more. Each standard is described concisely, with practical examples. From type definition to error handling, this book presents C++ best practices, including some that have only recently been identified and standardized-techniques you may not know even if you've used C++ for years. Along the way, you'll find answers to questions like What's worth standardizing--and what isn't? What are the best ways to code for scalability? What are the elements of a rational error handling policy? How (and why) do you avoid unnecessary initialization, cyclic, and definitional dependencies? When (and how) should you use static and dynamic polymorphism together? How do you practice "safe" overriding? When should you provide a no-fail swap? Why and how should you prevent exceptions from propagating across module boundaries? Why shouldn't you write namespace declarations or directives in a header file? Why should you use STL vector and string instead of arrays? How do you choose the right STL search or sort algorithm? What rules should you follow to ensure type-safe code? Whether you're working alone or with others, C++ Coding Standards will help you write cleaner code--and write it faster, with fewer hassles and less frustration.




Clean Code


Book Description

This title shows the process of cleaning code. Rather than just illustrating the end result, or just the starting and ending state, the author shows how several dozen seemingly small code changes can positively impact the performance and maintainability of an application code base.




Code Reviews 101


Book Description

There is no perfect code, whilst too many ways to write bad code. Even clean code will start to smell over time. The more the functionalities, the complexity and the number of different programmers working on it will make it smell. Healthy code requires incremental improvements, and reviews to stay that way. Would you also like to make more money as a programmer by being better at it? Discover the job-changing experience that you need. Sure enough, you might perform long searches on the web to try to put it all together. But why should you waste your time when you can have 15+ years of experience condensed into a single book?You can continue doing what you are doing. But let's be frank, you won't have read up to this point if you wanted it. You are here because you believe you can have a better career by being a good programmer. It's very tough to self-learn without the shared experience and guidance provided in this book. This book will walk through different approaches, reasoning why they are good or bad, as well as providing some clarifying examples (mainly Python). The book is broken down into different areas ranging from design and good coding practices to performances and security. A checklist ends all the chapters to help you during the code review process of your projects. Don't read this book...if: We are not here to talk about theoretical mumbo jumbo. We are going to talk about practical guidance. And it is our duty - as professionals - to code in the best possible way. Is it not?! This book might not be right for you if: If you are looking for an entire encyclopedia on data structures, software architectures, and any possible software engineering facets: this book is not for you. Certain concepts in the book are in pills: it provides just the core information that can assist you in doing better choices. This book is not made to impress you, it is made to help you out. To be handy and on point. It is not a Python programming book. Nor a programming book per se either. It is meant to help in writing better code by looking at it from several angles. This book is not boring. If you are looking for endless mechanical chapters, wrong choice. Let's add some fun, life is too short. If your heart as a programmer is too sensible on how bad code can be, please stop. I care about you, seriously. Or at least, read with caution, don't stress too much: there are other wonderful things in the world! And if you get upset identifying bad things that you did... no worries every single programmer on earth has been there! This book is right for you...if: This book is aimed at people with at least some experience with programming in some sort of language: C, C++, Java, Python. It could be easier for Object Oriented programming cowboys and cowgirls to go through the book, but a lot of concepts discussed in the book are general enough to be the foundations of good coding. Some more advanced chapters - like concurrency and security - might require some more focus to make your own if you are fairly new to them. But, no worries, keep going, it will be rewarding and it will give you the right tools to be at the top of your game. Hence, this book is for: Passionate programmers willing to go the extra mile and be better at their jobs. You will be happier, better paid and with an easier life. People who just started to program: this book will power up your programming skills. It will avoid you all the avoidable errors. Software engineers of all kinds. Knowing a programming language is not enough to be good at it. And I am sure you are or you will be a really good one. More experienced IT people in search of a quick guide on how to review code. But at the end of the day, I hope you'll enjoy it!




Beautiful Code


Book Description

How do the experts solve difficult problems in software development? In this unique and insightful book, leading computer scientists offer case studies that reveal how they found unusual, carefully designed solutions to high-profile projects. You will be able to look over the shoulder of major coding and design experts to see problems through their eyes. This is not simply another design patterns book, or another software engineering treatise on the right and wrong way to do things. The authors think aloud as they work through their project's architecture, the tradeoffs made in its construction, and when it was important to break rules. This book contains 33 chapters contributed by Brian Kernighan, KarlFogel, Jon Bentley, Tim Bray, Elliotte Rusty Harold, Michael Feathers,Alberto Savoia, Charles Petzold, Douglas Crockford, Henry S. Warren,Jr., Ashish Gulhati, Lincoln Stein, Jim Kent, Jack Dongarra and PiotrLuszczek, Adam Kolawa, Greg Kroah-Hartman, Diomidis Spinellis, AndrewKuchling, Travis E. Oliphant, Ronald Mak, Rogerio Atem de Carvalho andRafael Monnerat, Bryan Cantrill, Jeff Dean and Sanjay Ghemawat, SimonPeyton Jones, Kent Dybvig, William Otte and Douglas C. Schmidt, AndrewPatzer, Andreas Zeller, Yukihiro Matsumoto, Arun Mehta, TV Raman,Laura Wingerd and Christopher Seiwald, and Brian Hayes. Beautiful Code is an opportunity for master coders to tell their story. All author royalties will be donated to Amnesty International.




A Philosophy of Software Design


Book Description

"This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly and cheaply."--Amazon.




The Practice of Programming


Book Description

With the same insight and authority that made their book The Unix Programming Environment a classic, Brian Kernighan and Rob Pike have written The Practice of Programming to help make individual programmers more effective and productive. The practice of programming is more than just writing code. Programmers must also assess tradeoffs, choose among design alternatives, debug and test, improve performance, and maintain software written by themselves and others. At the same time, they must be concerned with issues like compatibility, robustness, and reliability, while meeting specifications. The Practice of Programming covers all these topics, and more. This book is full of practical advice and real-world examples in C, C++, Java, and a variety of special-purpose languages. It includes chapters on: debugging: finding bugs quickly and methodically testing: guaranteeing that software works correctly and reliably performance: making programs faster and more compact portability: ensuring that programs run everywhere without change design: balancing goals and constraints to decide which algorithms and data structures are best interfaces: using abstraction and information hiding to control the interactions between components style: writing code that works well and is a pleasure to read notation: choosing languages and tools that let the machine do more of the work Kernighan and Pike have distilled years of experience writing programs, teaching, and working with other programmers to create this book. Anyone who writes software will profit from the principles and guidance in The Practice of Programming.




Head First Python


Book Description

Want to learn the Python language without slogging your way through how-to manuals? With Head First Python, you’ll quickly grasp Python’s fundamentals, working with the built-in data structures and functions. Then you’ll move on to building your very own webapp, exploring database management, exception handling, and data wrangling. If you’re intrigued by what you can do with context managers, decorators, comprehensions, and generators, it’s all here. This second edition is a complete learning experience that will help you become a bonafide Python programmer in no time. Why does this book look so different? Based on the latest research in cognitive science and learning theory, Head First Pythonuses a visually rich format to engage your mind, rather than a text-heavy approach that puts you to sleep. Why waste your time struggling with new concepts? This multi-sensory learning experience is designed for the way your brain really works.




Perl Hacks


Book Description

A guide to getting the most out of Perl covers such topics as productivity hacks, user interaction, data munging, working with modules, object hacks, and debugging.