• Complain

Roth - Clean C++: sustainable software development patterns and best practices with C++ 17

Here you can read online Roth - Clean C++: sustainable software development patterns and best practices with C++ 17 full text of the book (entire story) in english for free. Download pdf and epub, get meaning, cover and reviews about this ebook. City: Berkeley;CA, year: 2017, publisher: Apress, genre: Computer. Description of the work, (preface) as well as reviews are available. Best literature library LitArk.com created for fans of good reading and offers a wide selection of genres:

Romance novel Science fiction Adventure Detective Science History Home and family Prose Art Politics Computer Non-fiction Religion Business Children Humor

Choose a favorite category and find really read worthwhile books. Enjoy immersion in the world of imagination, feel the emotions of the characters or learn something new for yourself, make an fascinating discovery.

Roth Clean C++: sustainable software development patterns and best practices with C++ 17
  • Book:
    Clean C++: sustainable software development patterns and best practices with C++ 17
  • Author:
  • Publisher:
    Apress
  • Genre:
  • Year:
    2017
  • City:
    Berkeley;CA
  • Rating:
    4 / 5
  • Favourites:
    Add to favourites
  • Your mark:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Clean C++: sustainable software development patterns and best practices with C++ 17: summary, description and annotation

We offer to read an annotation, description, summary or preface (depends on what the author of the book "Clean C++: sustainable software development patterns and best practices with C++ 17" wrote himself). If you haven't found the necessary information about the book — write in the comments, we will try to find it.

CH01 -- IntroductionCH02 -- Build a Safety NetCH03 -- Be PrincipledCH04 -- Basics of Clean C++CH05 -- Advanced concepts of modern C++CH06 -- Object OrientationCH07 -- Functional ProgrammingCH08 -- Test Driven DevelopmentCH09 -- Design Patterns and IdiomsAppendix A -- Small UML GuideBibliography.;Write maintainable, extensible, and durable software with modern C++. This book is a must for every developer, software architect, or team leader who is interested in good C++ code, and thus also wants to save development costs. If you want to teach yourself about writing clean C++, Clean C++ is exactly what you need. It is written to help C++ developers of all skill levels and shows by example how to write understandable, flexible, maintainable, and efficient C++ code. Even if you are a seasoned C++ developer, there are nuggets and data points in this book that you will find useful in your work. If you dont take care with your code, you can produce a large, messy, and unmaintainable beast in any programming language. However, C++ projects in particular are prone to be messy and tend to slip into bad habits. Lots of C++ code that is written today looks as if it was written in the 1980s. It seems that C++ developers have been forgotten by those who preach Software Craftsmanship and Clean Code principles. The Web is full of bad, but apparently very fast and highly optimized C++ code examples, with cruel syntax that completely ignores elementary principles of good design and well-written code. This book will explain how to avoid this scenario and how to get the most out of your C++ code. Youll find your coding becomes more efficient and, importantly, more fun. You will: Gain sound principles and rules for clean coding in C++ Carry out test driven development (TDD) Discover C++ design patterns and idioms Apply these design patterns.

Clean C++: sustainable software development patterns and best practices with C++ 17 — read online for free the complete book (whole text) full work

Below is the text of the book, divided by pages. System saving the place of the last page read, allows you to conveniently read the book "Clean C++: sustainable software development patterns and best practices with C++ 17" online for free, without having to search again every time where you left off. Put a bookmark, and you can go to the page where you finished reading at any time.

Light

Font size:

Reset

Interval:

Bookmark:

Make
Stephan Roth 2017
Stephan Roth Clean C++
1. Introduction
Stephan Roth 1
(1)
Bad Schwartau, Schleswig-Holstein, Germany
How it is done is as important as having it done.
Eduardo Namur
It is still a sad reality that many software development projects are in bad conditions, and some might even be in a serious crisis. The reasons for this are manifold. Some projects, for example, are afflicted because of lousy project management. In other projects, the conditions and requirements are constantly changed, but the process does not support this high-dynamic environment.
In some projects there are pure technical reasons: their code is of poor quality. That does not necessarily mean that the code is not working correctly. Its external quality , measured by the quality assurance department using blackbox, user, or acceptance tests, can be pretty high. It can pass the QA without complaints, and the test report says that they find nothing wrong. Also users of the software may be satisfied and happy, and its development has been completed on time and budget ( which is rare, I know). Everything seems to be fine really everything?
Nevertheless, the internal quality of this code, which might work correctly, can be very poor. Often the code is difficult to understand and horrible to maintain and extend. Countless software units, like classes, or functions, are very large, some of them with thousands of lines of code. Too many dependencies between software units lead to unwanted side effects if something is changed. The software has no perceivable architecture. Its structure seems to be randomly originated and some developers speak about historically grown software or architecture by accident. Classes, functions, variables, and constants have bad and mysterious names, and the code is littered with lots of comments: some of them are outdated, just describe obvious things, or are plain wrong. Developers are afraid to change something or to extend the software because they know that it is rotten and fragile, and they know that unit test coverage is poor, if there are any unit tests at all. Never touch a running system is a statement that is frequently heard in such kinds of projects. The implementation of a new feature doesnt need a few days until it is ready for deployment; it takes several weeks or even months.
Such a kind of bad software is often referred to as a Big Ball Of Mud . This term was first used in 1997 by Brian Foote and Joseph W. Yoder in a paper for the Fourth Conference on Patterns Languages of Programs (PLoP 97/EuroPLoP 97). Foote and Yoder describe the Big Ball Of Mud as a haphazardly structured, sprawling, sloppy, duct-tape-and-baling-wire, spaghetti-code jungle. Such software systems are costly and time-wasting maintenance nightmares, and they can bring a development organization to its knees!
The pathological phenomena just described can be found in software projects in all industrial sectors and domains. The programming language used doesnt matter. Youll find Big Ball Of Muds written in Java, PHP, C, C#, C++, or any other more or less popular language. But why is that so?
Software Entropy
First of all, there is something that seems to be like a natural law. Just like any other closed and complex system, software tends to get messy over time. This phenomenon is called software entropy . The term is based on the second law of thermodynamics. It states that a closed systems disorder cannot be reduced; it can only remain unchanged or increase. Software seems to behave this way. Every time a new function is added or something is changed, the code is getting a little bit more disordered. There are also numerous influencing factors that could forward software entropy, for instance, the following:
  • Unrealistic project schedules that will raise the pressure, and hence will compel developers to botch things and to do their work in a bad and unprofessional way.
  • Immense complexity of software systems nowadays.
  • Developers have different skill levels and experience.
  • Globally distributed, cross-cultural teams, enforcing communication problems.
  • The development mainly pays attention to the functional aspects (functional requirements and the systems use cases) of the software, whereby the quality requirements (a.k.a. nonfunctional requirements), such as performance efficiency, maintainability, usability, portability, security, etc., are neglected or at worst are being fully forgotten.
  • Inappropriate development environment and bad tools.
  • Management is focused on earning quick money and doesnt understand the value of sustainable software development.
  • Quick and dirty hacks and non-design-conformable implementations (a.k.a. Broken Windows ).
The Broken Window Theory
The Broken Window Theory was developed in U.S.-American crime research. The theory states that a single destroyed window at an abandoned building can be the trigger for the dilapidation of an entire neighborhood. The broken window sends a fatal signal to the environment: Look, nobody cares about this building! This attracts further decay, vandalism, and other antisocial behavior. The Broken Window Theory has been used as the foundation for several reforms in criminal policy, especially for the development of Zero-Tolerance strategies.
In software development, this theory was taken up and applied to the quality of code. Hacks and bad implementations, which are not compliant with the software design, are called broken windows. If these bad implementations are not repaired, more hacks to deal with them may appear in their neighborhood. And thus, the dilapidation of code is set into motion.
Dont tolerate broken windows in your code fix them!
However, it seems to be that particular C and C++ projects are prone for mess and tend more than others to slip off into a bad state. Even the World Wide Web is full of bad, but apparently very fast and highly optimized C++ code examples, with a cruel syntax and completely ignoring elementary principles for good design and well-written code.
One reason for this might be that C++ is a multi-paradigm programming language on an intermediate level, that is, it comprises both high-level and low-level language features. With C++ you are able to write large and distributed business software systems with sophisticated user interfaces, as well as software for small embedded systems with real-time behavior, tied very closely to the underlying hardware. Multi-paradigm language means that you are able to write procedural, functional, or object-oriented programs, or even a mixture of all three paradigms. In addition, C++ allows Template Metaprogramming (TMP ), a technique in which so-called templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled. And ever since the release of ISO standard C++11, even more ways have been added, for example, functional programming with anonymous functions are now supported in a very elegant manner by lambda expressions. As a consequence of these diverse capabilities, C++ has the reputation to be very complex, complicated, and cumbersome.
Another cause for bad software could be that many developers didnt have an IT background. Anyone can begin to develop software nowadays, no matter if she has a university degree or any other apprenticeship in computer science. A vast majority of C++ developers are (or were) non-experts. Especially in the technological domains automotive, railway transportation, aerospace, electrical/electronics, or mechanical engineering, many engineers slipped into programming during the last decades without having an education in computer science. As the complexity grew and technical systems contained more and more software, there was an urgent need for programmers. This demand was covered by the existing workforce. Electrical engineers, mathematicians, physicists, and also lots of people from strictly nontechnical disciplines started to develop software and learn it mainly by self-education and hands-on by simply doing it. And they have done it to their best knowledge and belief.
Next page
Light

Font size:

Reset

Interval:

Bookmark:

Make

Similar books «Clean C++: sustainable software development patterns and best practices with C++ 17»

Look at similar books to Clean C++: sustainable software development patterns and best practices with C++ 17. We have selected literature similar in name and meaning in the hope of providing readers with more options to find new, interesting, not yet read works.


Reviews about «Clean C++: sustainable software development patterns and best practices with C++ 17»

Discussion, reviews of the book Clean C++: sustainable software development patterns and best practices with C++ 17 and just readers' own opinions. Leave your comments, write what you think about the work, its meaning or the main characters. Specify what exactly you liked and what you didn't like, and why you think so.