Martin Fowler's guide to reworking bad code into well-structured code
Refactoring improves the design of existing code and enhances software maintainability, as well as making existing code easier to understand. Original Agile Manifesto signer and software development thought leader, Martin Fowler, provides a catalog of refactorings that explains why you should refactor; how to recognize code that needs refactoring; and how to actually do it successfully, no matter what language you use.
Examples are written in JavaScript, but you shouldn't find it difficult to adapt the refactorings to whatever language you are currently using as they look mostly the same in different languages.
Whenever you read [Refactoring], it's time to read it again. And if you haven't read it yet, please do before writing another line of code. -David Heinemeier Hansson, Creator of Ruby on Rails, Founder & CTO at Basecamp
Any fool can write code that a computer can understand. Good programmers write code that humans can understand. -M. Fowler (1999)
An Introduction to Programming by the Inventor of C++
Programming: Principles and Practice Using C++, Third Edition, will help anyone who is willing to work hard learn the fundamental principles of programming and develop the practical skills needed for programming in the real world. Previous editions have been used successfully by many thousands of students. This revised and updated edition
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
A comprehensive guide to exploring modern Python through data structures, design patterns, and effective object-oriented techniques
Key Features:
Book Description:
Python Object-Oriented Programming, Fourth Edition dives deep into the various aspects of OOP, Python as an OOP language, common and advanced design patterns, and hands-on data manipulation and testing of more complex OOP systems. These concepts are consolidated by open-ended exercises, as well as a real-world case study at the end of every chapter, newly written for this edition. All example code is now compatible with Python 3.9+ syntax and has been updated with type hints for ease of learning.
Steven and Dusty provide a friendly, comprehensive tour of important OOP concepts, such as inheritance, composition, and polymorphism, and explain how they work together with Python's classes and data structures to facilitate good design. UML class diagrams are generously used throughout the text for you to understand class relationships. Beyond the book's focus on OOP, it features an in-depth look at Python's exception handling and how functional programming intersects with OOP. Not one, but two very powerful automated testing systems, unittest and pytest, are introduced in this book. The final chapter provides a detailed discussion of Python's concurrent programming ecosystem.
By the end of the book, you will have a thorough understanding of how to think about and apply object-oriented principles using Python syntax and be able to confidently create robust and reliable programs.
What You Will Learn:
Who this book is for:
If you are new to object-oriented programming techniques, or if you have basic Python skills and wish to learn how and when to correctly apply OOP principles in Python, this is the book for you. Moreover, if you are an object-oriented programmer coming from other languages or seeking a leg up in the new world of Python, you will find this book a useful introduction to Python. Minimal previous experience with Python is necessary.
Have you always wanted to learn computer programming but are afraid it'll be too difficult for you? Or perhaps you know other programming languages but are interested in learning the C# language fast?
This book is for you. You no longer have to waste your time and money learning C# from boring books that are 600 pages long, expensive online courses or complicated C# tutorials that just leave you more confused.
What this book offers... C# for BeginnersComplex concepts are broken down into simple steps to ensure that you can easily master the C# language even if you have never coded before.
Carefully Chosen C# ExamplesExamples are carefully chosen to illustrate all concepts. In addition, the output for all examples are provided immediately so you do not have to wait till you have access to your computer to test the examples.
Careful selection of topicsTopics are carefully selected to give you a broad exposure to C#, while not overwhelming you with information overload. These topics include object-oriented programming concepts, error handling techniques, file handling techniques and more.
Learn The C# Programming Language FastConcepts are presented in a to-the-point style to cater to the busy individual. With this book, you can learn C# in just one day and start coding immediately.
How is this book different...The best way to learn C# is by doing. At the end of the book, you'll be guided through a unique project that requires the application of all the concepts taught previously. Working through the project will not only help you see how it all ties together, it'll also give you an immense sense of achievement and the exhilaration of turning lines of code into a finished product that you can be proud of
Are you ready to dip your toes into the exciting world of C# coding? This book is for you. Click the Add to Cart button to buy it now.
What you'll learn: Introduction to C# - What is C#? - How to install and run Visual Studio Community 2015?Finally, you'll be guided through a hands-on project that requires the application of all the topics covered.
Click the BUY button at the top of this page now to start learning C#. Learn it fast and learn it well.
Generative AI is transforming software development. Stay on the cutting edge with this guide to AI pair programming! Learn how to make the most of modern tools like ChatGPT and GitHub Copilot to improve your coding. Automate refactoring, debugging, and other tedious tasks, and use techniques such as prompt engineering and retrieval-augmented generation to get the code you need. Follow practical examples that show how you can program faster, more efficiently, and with fewer errors with the help of AI.
In this book, you'll learn about:
a. Hype versus Reality
Learn from expert developers to understand the possibilities (and pitfalls) of AI tools. With the help of practical code examples, see how to use AI helpers correctly to their full potential.
b. Assistants for All Tasks
This guide gives you an up-to-date overview of all aspects of AI-assisted coding: GitHub Copilot autocompletions, project bootstrapping with OpenHands, debugging and refactoring, application development, and more.
c. In the Cloud or Local?
Use OpenAI's API to integrate AI models directly into your own scripts and automations--or use local large language models (LLMs) to work independently of cloud services.
Highlights include:
1) Structured programming with AI
2) Debugging
3) Unit testing
4) Refactoring
5) Automatic document creation
6) Database development and design
7) Scripting and administration
8) Local large language models (LLMs)
9) Retrieval-augmented generation (RAG)
10) ChatGPT and GitHub Copilot
11) OpenHands
12) OpenAI API
The most successful programs of the last 30 years were developed in C++. From Microsoft Word to Facebook to Adobe Photoshop, C++ is at the heart of the most lucrative technologies in today's world.
C++ is the most powerful programming language in the modern world for one simple reason: it allows for complete control, not only of the program's logic and graphical user interface, but of the hardware too.
If all the IT giants use it, it stands to reason that the most successful programmers in the world all have C++ on their resume. And that's why you should add it to yours today.
With a solid foundation in C++ programming, you can open doors and grow your salary--it's simply a case of learning a new language. Once you've mastered the basics, you'll gain:
➢ The skills to micro-manage any computer's performance
➢ The ability to write code for Windows, Mac, Linux, and mobile devices
➢ The capability of programming computer games, graphical applications, and AI, to name but a few
➢ A stepping stone to mastering a host of other programming languages
➢ A fundamental understanding of a complex but logical computer language
I just finished reading HF OOA&D and I loved it! The thing I liked most about this book was its focus on why we do OOA&D-to write great software!
Kyle Brown, Distinguished Engineer, IBM
Hidden behind the funny pictures and crazy fonts is a serious, intelligent, extremely well-crafted presentation of OO Analysis and Design. As I read the book, I felt like I was looking over the shoulder of an expert designer who was explaining to me what issues were important at each step, and why.
Edward Sciore, Associate Professor, Computer Science Department, Boston College
Tired of reading Object Oriented Analysis and Design books that only makes sense after you're an expert? You've heard OOA&D can help you write great software every time-software that makes your boss happy, your customers satisfied and gives you more time to do what makes you happy.
But how?
Head First Object-Oriented Analysis & Design shows you how to analyze, design, and write serious object-oriented software: software that's easy to reuse, maintain, and extend; software that doesn't hurt your head; software that lets you add new features without breaking the old ones. Inside you will learn how to:
By exploiting how your brain works, Head First Object-Oriented Analysis & Design compresses the time it takes to learn and retain complex information. Expect to have fun, expect to learn, expect to be writing great software consistently by the time you're finished reading this!
Domain-Specific Modeling (DSM) is the latest approach to software development, promising to greatly increase the speed and ease of software creation. Early adopters of DSM have been enjoying productivity increases of 500-1000% in production for over a decade. This book introduces DSM and offers examples from various fields to illustrate to experienced developers how DSM can improve software development in their teams.
Two authorities in the field explain what DSM is, why it works, and how to successfully create and use a DSM solution to improve productivity and quality. Divided into four parts, the book covers: background and motivation; fundamentals; in-depth examples; and creating DSM solutions. There is an emphasis throughout the book on practical guidelines for implementing DSM, including how to identify the necessary language constructs, how to generate full code from models, and how to provide tool support for a new DSM language. The example cases described in the book are available the book's Website, www.dsmbook.com, along with, an evaluation copy of the MetaEdit+ tool (for Windows, Mac OS X, and Linux), which allows readers to examine and try out the modeling languages and code generators.
Domain-Specific Modeling is an essential reference for lead developers, software engineers, architects, methodologists, and technical managers who want to learn how to create a DSM solution and successfully put it into practice.
If you don't use regular expressions yet, you will discover in this book a whole new world of mastery over your data. If you already use them, you'll appreciate this book's unprecedented detail and breadth of coverage. If you think you know all you need to know about regular expressions, this book is a stunning eye-opener.
As this book shows, a command of regular expressions is an invaluable skill. Regular expressions allow you to code complex and subtle text processing that you never imagined could be automated. Regular expressions can save you time and aggravation. They can be used to craft elegant solutions to a wide range of problems. Once you've mastered regular expressions, they'll become an invaluable part of your toolkit. You will wonder how you ever got by without them.
Yet despite their wide availability, flexibility, and unparalleled power, regular expressions are frequently underutilized. Yet what is power in the hands of an expert can be fraught with peril for the unwary. Mastering Regular Expressions will help you navigate the minefield to becoming an expert and help you optimize your use of regular expressions.
Mastering Regular Expressions, Third Edition, now includes a full chapter devoted to PHP and its powerful and expressive suite of regular expression functions, in addition to enhanced PHP coverage in the central core chapters. Furthermore, this edition has been updated throughout to reflect advances in other languages, including expanded in-depth coverage of Sun's java.util.regex package, which has emerged as the standard Java regex implementation.Topics include:
Written in the lucid, entertaining tone that makes a complex, dry topic become crystal-clear to programmers, and sprinkled with solutions to complex real-world problems, Mastering Regular Expressions, Third Edition offers a wealth information that you can put to immediate use.
Reviews of this new edition and the second edition:
There isn't a better (or more useful) book available on regular expressions.
--Zak Greant, Managing Director, eZ Systems
A real tour-de-force of a book which not only covers the mechanics of regexes in extraordinary detail but also talks about efficiency and the use of regexes in Perl, Java, and .NET...If you use regular expressions as part of your professional work (even if you already have a good book on whatever language you're programming in) I would strongly recommend this book to you.
--Dr. Chris Brown, Linux Format
The author does an outstanding job leading the reader from regex novice to master. The book is extremely easy to read and chock full of useful and relevant examples...Regular expressions are valuable tools that every developer should have in their toolbox. Mastering Regular Expressions is the definitive guide to the subject, and an outstanding resource that belongs on every programmer's bookshelf. Ten out of Ten Horseshoes.
--Jason Menard, Java Ranch
Learn Generative Analysis--a New Method of Object-Oriented Analysis--to Keep Pace with How Generative AI Is Transforming the Face of Software Engineering
Generative AI is revolutionizing software engineering--many aspects of manual coding are becoming automated, and the skills needed by software engineers, developers, and analysts are evolving. Anyone who writes or works with code will need to produce precise analysis artifacts to feed the AI code-generation process. Enter generative analysis: a precise, structured way for software engineers, programmers, and analysts to transition to this new, AI-enhanced software engineering world.
In Generative Analysis, experts Jim Arlow and Ila Neustadt leverage Literate Modeling, M++, and multivalent logic to lay out a step-by-step approach to object-oriented analysis that produces clear and unambiguous results suitable for further processing into code by generative AI systems such as Copilot, ChatGPT, and Gemini. Prepare for the challenge of the future by understanding the flexibility you already have at hand using generative analysis.
This guide teaches advanced, precise, and sophisticated analysis techniques that will allow you to thrive in the new world of software engineering with generative AI.
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Unleash the full potential of Android app development with Jetpack Compose 1.7. This comprehensive guide teaches you to build sleek, modern Android applications using the latest tools, including Android Studio, Material Design 3, and Kotlin. Tailored for developers who want to go from setup to full-scale deployment, this book takes you step-by-step through every phase of app creation-from mastering the essentials of Android Studio to publishing on the Google Play Store.
Begin by setting up your development environment and dive into Kotlin essentials, covering data types, functions, coroutines, and more to build a strong programming foundation. Then, explore Jetpack Compose fundamentals and Android project architecture, moving into practical tutorials on crafting custom Composables and layouts like row, column, box, flow, pager, and list components. The book doesn't just stop at layout; it guides you through state management, UI navigation, modifiers, and custom components.
Unlock advanced capabilities with biometric authentication, Google Maps integration, and in-app billing for revenue generation. Deepen your skills with graphics, animations, and gesture handling to create interactive and dynamic interfaces. Plus, master data storage with Room databases, view models, and live data.
To solidify your knowledge, the book includes access to over 55 online knowledge test quizzes covering each key concept, giving you a way to test your understanding and track your progress. Every concept is reinforced through hands-on tutorials, complete with downloadable source code, making it easy to follow along and practice as you go.
Every concept is reinforced through hands-on tutorials, complete with downloadable source code, making it easy to follow along and practice as you go. If you're ready to bring your app to life, this guide will walk you through the complete process, from development to publication.
Get ready to take your Android app development skills to the next level with this essential guide to Jetpack Compose 1.7.