Clean Code Development With Python (2023-03-28 - 2023-03-30)¶
Package Installation, Virtual Environments
Day 1: Python Development: Select Topics¶
Up front, something about Python The Language. Exercise material not shown, will pick that from here as appropriate, or invent something new.
Basics, And Datatypes¶
A quick run-through covering Python basics, and its built-in datatypes. Neat insights into Python’s internals (“everything is an object”), iterators, and slicing (the basis for NumPy array handling).
There always more about Python. Error handling, automatic resource cleanup, modularization.
Iterating Intelligently: Generators, and the Iterator Protocol
(To be created) Presentable material and exercises about
Even more about Python. Interesting and useful stuff; optional nonetheless.
Day 2: Clean Code? (Software Development: A Craft)¶
Messages From The Book¶
The following material (which has been created for a similar show, but in C++) will be adapted for our seminar. Goal is to start a discussion on … well … software development, and how it is understood. Agile.
Survey of The Book (taken from Clean Code: Messages From The Book, but polished and Pythonized)
Condensed version of the following talk series by Bob Martin which takes two days to watch:
Object Oriented Programming¶
Python is not a strict OO language: it does not require anybody to know what a class is. It does bring all features that such languages usually bring, though, and if one knows more, one can do more.
Conversely, Python’s internals are stongly object oriented.
float are objects, for example, and functions and classes are,
too, as are modules and iterators/generators, to name a few more.
It looks like OO is not entirely bad. OO has made its way into software development, it is part of our “craft”, so lets have a deeper look at it.
From Object Oriented Programming:
Exercises: there is some in Object Oriented Programming that we could pick from. Lets think about something more to the point though.
Discussion: so what? OO is there to solve problems in a readable and reproducible way.
Pythonize some patterns (the simpler ones) from Design Patterns With C++. Maybe …
No craft without testing. Again, automated testing is part of software development for a long time now. Developers, and their employers likewise, do not always recognize the goodness of non-immediacy.
Ease the technical hurdle, give terminology, discuss (unit tests as documentation). The exercises in this training will be formulated as unit tests, so maybe this chapter is in order right at the beginning of it.