Skip to main content

QtWS17 - A Cute app deserves a Clean architecture, Marco Piccolino, Maply

If you ask about application architecture best practices in the Qt community, one of the first pieces of advice you’ll get is probably: “do your logic in C++ and your GUI in qml”. That is, at least a two-layer architecture is suggested. Fresh developers regard this as sufficient advice and dive straight into the code. There must be some principles of application architecture that should be applicable no matter what, or at least across many scenarios. There must be a more helpful answer. MVC, MVVM, MVP, Flux, are such possible answers. The Clean Architecture (Robert C. Martin) is another answer. It promotes separation of concerns by defining in a specific way what main layers constitute the application logic, and what additional layers deal with. It tries to be more concerned about business entities than standardised system components. It promises to be independent of frameworks, testable, independent of UI, independent of database, and independent of any external agency. This talk will show a way of implementing the Clean Architecture for Qt applications. While the architecture itself is independent of frameworks, space will be given to Qt-specific features that make life a bit easier to help you put the theory into practice and try it for your next project. Among other things, you’ll see a way of implementing Behaviour Driven Development in Qt by modelling use cases in the code, a way of structuring your projects by making the app’s functionality stand out from file names, and much more. You’ll see if the suggested approach can work for you too. The talk will likely be interesting to both Qt newcomers, developers who are looking for alternative architectural approaches for their apps, and, in part, to managers who want to find better ways to communicate with their dev team. A basic operating knowledge about common Qt modules and C++ is suggested but not required.