Modern Programming: Object Oriented Programming and Best Practices
上QQ阅读APP看书,第一时间看更新

About the Book

Your experience and knowledge always influence the approach you take and the tools you use to write your programs. With a sound understanding of how to approach your goal and what software paradigms to use, you can create high-performing applications quickly and efficiently.

In this two-part book, you'll discover the untapped features of object-oriented programming and use it with other software tools to code fast and efficient applications. The first part of the book begins with a discussion on how OOP is used today and moves on to analyze the ideas and problems that OOP doesn't address. It continues by deconstructing the complexity of OOP, showing you its fundamentally simple core. You'll see that, by using the distinctive elements of OOP, you can learn to build your applications more easily.

The next part of this book talks about acquiring the skills to become a better programmer. You'll get an overview of how various tools, such as version control and build management, help make your life easier. This book also discusses the pros and cons of other programming paradigms, such as aspect-oriented programming and functional programming, and helps to select the correct approach for your projects. It ends by talking about the philosophy behind designing software and what it means to be a "good" developer.

By the end of this two-part book, you will have learned that OOP is not always complex, and you will know how you can evolve into a better programmer by learning about ethics, teamwork, and documentation.

About the Author

Graham Lee is an experienced programmer and writer. He has written books including Professional Cocoa Application Security, Test-Driven iOS Development, APPropriate Behaviour, and APPosite Concerns. He is a developer who's been doing this stuff for long enough to want to start telling other people about the mistakes he's made, in the hope that they'll avoid repeating them. In his case, this means having worked for about 12 years as a professional. His first programming experience can hardly be called professional at all: that was done in BASIC on a Dragon 32 microcomputer. He's been paid for software written in Perl, Python, Bash, LISP, Pascal, C, Objective-C, Java, Applescript, Ruby, C++, JavaScript, and probably some other things.

Please find me on Twitter (https://twitter.com/iwasleeg), quitter (https://quitter.se/leeg), or my blog (https://sicpers.info) to comment or query anything here.

Learning Objectives

  • Untangle the complexity of OOP by breaking it down to its essential building blocks.
  • Realize the full potential of OOP to design efficient, maintainable programs.
  • Utilize coding best practices, including Test-Driven Development (TDD), pair programming, and code reviews, to improve your work.
  • Use tools, such as source control and IDEs, to work more efficiently.
  • Learn how to most productively work with other developers.
  • Build your own software development philosophy.

Audience

This book is ideal for programmers who want to understand the philosophy behind creating software and what it means to be "good" at designing software. Programmers who want to deconstruct the OOP paradigm and see how it can be reconstructed in a clear, straightforward way will also find this book useful. To understand the ideas expressed in this book, you must be an experienced programmer who wants to evolve their practice.

Approach

This book takes an autobiographical approach to explain the various concepts. The information in this book is based on the author's opinions and desired future directions. The author introduces key ideas and concepts, before going on to explain them in detail, outline their pros and cons, and guide you in how to most effectively use them in your own development.

Acknowledgements

This book is the result of a long-running research activity, and I hope that any work I have built upon is appropriately cited. Nonetheless, the ideas here are not mine alone (that distinction is reserved for the mistakes), and many conversations online, at conferences, and with colleagues have shaped the way I think about objects. A complete list would be impossible to construct, and an incomplete list would be unfair. So, I'll just say thank you.