Void Methoden sind nicht Design Gerüche.
Objektorientierung (im Gegensatz zur funktionalen Programmierung) ermöglicht Nebeneffekte, zB das Ändern der Interna des Objekts, auf das die Methode angewendet wird. Das ist normal.
Ob das gut ist oder nicht, ist eine andere Frage. Funktionale Programmierung ist in Bezug auf Ausdruckskraft sicherlich stärker. Es ist möglich, Code zu schreiben, der fast nicht missbraucht werden kann (wenn er kompiliert wird).
Auch ungültige Methoden verursachen im Allgemeinen keine zeitliche Kopplung. Zeitliche Kopplung würde bedeuten, dass es eine andere Methode geben muss, die vor oder nach der Methode aufgerufen werden muss, sonst ist der Methodenaufruf nicht sinnvoll.
Natürlich haben Sie die Semantik des Methodenaufrufs wissen, mit anderen Worten, was es bedeutet. Das ist zu erwarten, und wäre bei funktionaler Programmierung auch für Funktionen mit der gleichen Signatur gleich.
Void-Methode hat keine zeitliche Kopplung, wenn es zustandslos ist. Aber die statusfreie Void-Methode könnte die Nutzlast nur über veränderliche Argumente bereitstellen, was wirklich ein Code-Geruch ist. – SerG