Skip navigation

Clean Code DeveloperClean Code Developer

5257 members | 545 posts | Public Group
Hosted by:Ralf Westphal

Q: What are Adapters?

A: Adapters are wrappers of something usually with a different interface.

In testing-related scenarios, we build adapters for things that make testing hard.

If our code connects to a physical printer directly, we'll need a printer to run our tests. But if it calls the printer through an adapter, we can mock that adapter.

To facilitate testability, use adapters in your architecture. It will not only make testing easy but also promote testing.

Liebe Community,

wir wollen im Ruhrgebiet eine Community-Konferenz zum Thema Softwarequalität bzw. Clean Code auf die Beine stellen. Erste Konferenz soll am 05./06. November 2020 in Dortmund stattfinden.

Trotzt Corona-Pandemie, blickt das Orga-Team positiv in die Zukunft und bittet um eure Unterstützung.

Wenn Du uns als Speaker unterstützen möchtest:

In mehreren Sessions und Workshops wollen wir den Teilnehmern einen Einblick so wie Vertiefung in die Themen zur Software- und Prozessqualität, Clean Code, Clean Architektur, Testing sowie XP Techniken anbieten.

Wenn Du an den Tagen Sessions oder Workshops zu den obengenannten Themen anbieten möchtest, schicke uns bitte einen Abstract zu deinem Beitrag samt Dauer deines Sessions / Workshops, ob es Vortrag oder Workshop ist und eine kurze Biographie von Dir an callforpapers@iterate.ruhr

Gewünscht sind entweder Vorträge zu 45 Minuten oder längere Sessions mit 75 Minuten. Workshops sind als ganztägige Veranstaltungen geplant. Wenn Dir ein anderes Format oder Thema am Herzen liegt, wäre diese auch möglich.

Wenn Du uns als Mitgestalter oder Sponsor unterstützen möchtest:

Wenn Du die Konferenz mitgestalten möchtest und/oder dein Arbeitgeber die Konferenz sponsern möchtet, bitte kontaktiere uns per E-Mail unter dieser E-Mail Adresse: info@iterate.ruhr

https://www.meetup.com/de-DE/iterate-RUHR/

Schöne Grüßen aus Dortmund

Özgür Ergel

Es ist soweit: Unsere Webseite ist online. https://iterate.ruhr

Hallo Zusammen,

ich heiße Kathinka und gehöre zu einem kleinen Team, das in den letzten zwei Jahren ein Open - Source - Framework entwickelt hat, welches das Bauen von Webapplikationen nach den Clean Code Prinzipien so vereinfacht, dass es für jeden nachvollziehbar und ohne work-around einsetzbar ist.

Die eingehaltenen Clean Code Prinzipien zeigen sich daran, dass wir keine Abhängigkeiten der Domain Logic auf unser Framework haben und wir arbeiten zudem komplett ohne Annotations.

Wir verwenden unter anderem CheckStyle, SpotBugs, SonarCloud und OWASP Dependency Checker.

Jeweils als Quality Gate konfiguriert mit 0% Fehlertoleranz.

Für mehr und genauere Informationen gerne einfach einmal die Homepage besuchen:

www.quantummaid.de

Wir sind auf einem guten Weg. Es gibt aber ein paar Bereiche, bei denen wir wirklich noch auf etwas Hilfe von der Community angewiesen sind.

Ein ganz zentraler Punkt ist unsere Usability.

Was uns sehr helfen würde wären Contributer, die sich bereit erklären mit uns ein 15 Minuten Tutorial durchzugehen.

Dieses Tutorial ist dafür gedacht, einen ersten Eindruck unseres Frameworks zu bekommen und eine einfache WebApplikation damit zu bauen.

Anbei bei Interesse eine genaue Erklärung wie das ablaufen würde.

https://quantummaid.de/docs/05_usabilitytesting.html

Wir freuen uns auf Feedback, Kommentare und natürlich auch fachlichen Austausch.

Viele Grüße

Kathinka

Hallo Kathinka, ich habe nur kurz das 15min Tutorial überflogen, um einen Eindruck davon zu bekommen, was QuantumMaid eigentlich ist. Tatsächlich hatte ich mir mehr erwartet, wenn es um das "Bauen von Webapplikationen" geht - oder ich habe das Framework falsch verstanden? Wenn ich es richtig sehe, dann ist QuantumMaid ein Framework, um ein Rest-Backend zu entwickeln. Da gibt es aktuell ja auch viel Bewegung auf dem Markt. Ich bin z.B. auch bei der Beta von https://darklang.com mit dabei. Das ist zwar nicht open-source und nicht DDD/UC-basiert, aber noch mal massivst viel schneller zum Entwickeln als QuantumMaid. Ein interessanter Aspekt ist natürlich die Clean Architecture direkt als first-class Konzept zu unterstützen. Das ist sicher eine tolle Sache, aber in letzter Zeit sind mir immer öfter Fälle begegnet, in denen das Backend gar nicht so der dramatische Aspekt ist. Immer mehr dieser Arbeit scheint sich in die Frontends zu bewegen und gerade, wenn man von Use Cases spricht, bewegt man sich ja erst mal in der Welt. (Oder im Falle von Microservices gleich in Richtung von Sagas (siehe Sam Newman's neues Buch). Nicht, dass ich das aus dem Backend wegdiskutieren möchte - es hat dort auf jeden Fall auch seine Berechtigung. Was ich aber aktuell leider vermisse ist ein ganzheitlicher Ansatz, denn wenn ich eine "Webapplikation" bauen möchte, dann möchte ich weder ein QuantumMaid Backend, noch eine React oder Angular UI - ich brauche beides und es muss zusammen passen. Und um das zu erreichen, brauchen wir heutzutage gefühlt noch 10x zu lange. Die Fortschritte bei der schnellen Entwicklung von Backends sind schon ganz ok mit solchen Werkzeugen. Tatsächlich habe ich erst ein paar interne Webapplikationsprototypen mit Dark+Angular entwickelt und dabei feststellen müssen, dass der Aufwand für das Backend auf unter 1h gesunken ist. Ich gehe auch davon aus, dass es mit QuantumMaid ähnlich wenig wäre - leider bleiben dabei aber nochmal 2 Wochen Frontend-Arbeit. Langer Rede, kurzer Sinn: Ich hoffe du kannst ein wenig mit dem Feedback anfangen und vielleicht wollt ihr deutlicher machen, bei welchem Teil einer Webapplikation QuantumMaid einen unterstützen kann. Viele Grüße, Frank
Hallo Frank, bei der Aussage, dass alles 10x zu lange braucht, mussten wir schmunzeln. Schließlich sehen wir das genauso. Fundamental anderer Meinung sind wir aber bei den Verantwortlichkeiten von Frontend und Backend. Deine Herangehensweise fokussiert sich auf ein komplexes Frontend mit Business Logic und ein leichtgewichtiges Backend. Wir hingegen sehen das Frontend nur als GUI. Unsere gesamte Business Logic befindet sich in unserem Backend. Das macht unser Frontend leichter, unser Backend hingegen komplex. QuantumMaid vereinfacht das "Bauen von Webapplikationen", indem es den für uns schwierigen Teil vereinfacht: das Backend. QuantumMaid war nie als Konkurrenz zu darklang.com gedacht. Dark ist ein super Tool, um ein leichtgewichtiges Backend in einer graphischen UI zu erstellen. QuantumMaid wird dann nützlich, wenn dieser graphische Ansatz nicht mehr möglich ist. Wenn das Backend ein komplexes Domain Model beinhaltet und viele UseCases darauf zugreifen. Wenn der Infrastrukturteil komplex wird, weil Technologien wie Lambda, SQS oder Websocket (durchaus auch gleichzeitig) zum Einsatz kommen. Wenn man für ein besseres Scaling auf verteilte Transaktionen verzichtet, das Domain Model aber trotzdem noch "einfach" und frei von Infrastrukturcode bleiben soll. Das ist das Einsatzgebiet von QuantumMaid. Diesen Fokus wird QuantumMaid auch immer beibehalten. Es wird nie eine Vereinfachung fürs Frontend darstellen, weil für uns das Frontend der "leichtere" Teil ist (was die Implementierung von Business Logic betrifft; beim Rest sind wir immer auf der Suche nach einfacheren Tools). Aber wir haben uns über dein Feedback gefreut. Wenn wir einen solchen Abschnitt wie oben über unseren Beitrag zum "Bauen von Webapplikationen"schreiben müssen, war da wirklich noch ein großer Spielraum für Interpretation. In Zukunft werden wir proaktiv genauer darlegen, bei welchen Systemen wir QuantumMaid als hilfreich sehen und welche Systeme einen anderen Fokus haben und daher von anderen Tools mehr profitieren. Viele Grüße Kathinka
This post is only visible to logged-in members. Log in now
"Functional Core, Imperative Shell" (FCIS) würde ich eher zur Liga der Architekturmuster denn der Prinzipien zählen. FCIS mit IOSP zu vergleichen, wäre also Äpfel mit Birnen zu vergleichen. FCIS is für mich eine Variation über die Hexagonale Architektur (HA): Functional Code entspricht der dortigen Belang "Application" im Kern, Imperative Shell entspricht dem dortigen Belang "Adapter" um den Kern herum. Eine Variation ist FCIS, weil weil HA keine Aussage darüber macht, wie Application und Adapter implementiert werden sollen. Wenn FCIS mit etwas verglichen werden sollte, dann mit der IODA Architecture, die auf IOSP aufbaut. Aber auch wenn in der IODA-Praxis ein "Kern" (Domäne) sich immer wieder anbietet, um ohne Objekte realisiert zu werden (worauf "Functional Core" wie in Functional Programming anspielt), ist IODA mehr als FCIS, weil in IODA ein weiterer Belang ausgeprägt ist, der in den anderen Architekturmustern überhaupt nicht vorkommt: das ist die Integration. Auch in FCIS stellt sich ja die Frage: Wie werden diese Belange zusammengeführt? IODA ist da explizit. Das macht ein eigener Belang, der nur dafür verantwortlich ist, dass "Fluss entsteht". Und ob die Teile, die da in einem Datenfluss zusammengesteckt werden, dann eher imperativ oder eher FP-basiert sind... das ist IODA egal. Ich nenne FCIS auch immer mal wieder in Clean Code Trainings - aber es ist für mich eben nur eine interessante Variante. Grundlegender sind IODA und IOSP für mich.
Ich stimme Ralf zu, es handelt sich um ein Muster und nicht um ein Prinzip. Die Tatsache, dass der Autor im Video betont, er würde keine Tests für die äußere Ebene schreiben, zeigt, dass die klare Trennung zwischen Operationen und deren Integration nicht konsequent umgesetzt ist. Er wäre bei den Tests immer wieder mit Abhängigkeiten konfrontiert zur Konsole, dem Webservice, der Datenbank und Multithreading. Bei einem Systemtest (oder end to end Test) auf der äußersten Ebene bleibt das nicht aus. Aber es gibt in seiner Lösung keine Integrationsebene, die frei ist von diesen Abhängigkeiten. Daher kann er die Tests nicht schreiben. Das Argument, der Code sei simpel und überschaubar, daher ja offensichtlich korrekt, ist ein gefährliches ;-) Wenn er sich da einen Bug einbaut, kann er den nur finden, in dem er das Programm ausführt. Mit Tests wäre das definitiv einfacher.

Liebe Community,

Ich stehe kurz vor meinem Masterabschluss und bräuchte ein wenig Unterstützung bei meiner Masterarbeit. Diese handelt von der Produktivität als auch Arbeitsqualität von Entwicklern und wie diese Aspekte beeinflusst werden. Ich würde mich sehr freuen, wenn Entwickler meine Umfrage ausfüllen könnten: https://ww2.unipark.de/uc/Universitaet_Koblenz_Landau/ad4e/

Bei allen anderen wäre es super, wenn ihr meinen Beitrag an bekannte Entwickler weiterleiten könntet!

Liebe Grüße

Jenny

Hallo Jenny, Du schreibst nicht, worum es in der Masterarbeit geht. Und die Fragen in der Umfrage sind ja eher allgemein gehalten, daher würde mich schon das Thema deiner Masterarbeit interessieren. Viele Grüße, Christof
Hallo Christof, erstmal vielen Dank für das Interesse! Ich habe das Thema extra nicht "verraten", damit ich keine Antworten im Vorfeld beeinflusse. So möchte ich unvoreingenommene Antworten erhalten. Allerdings hast du Recht, wenn man schon teilnimmt, möchte man wenigstens grob die Thematik kennen. Ich habe deswegen meinen Post etwas angepasst. Es geht um die Produktivität und Arbeitsqualität von Entwickler und durch was und zu welchem Grad diese beiden Aspekte beeinflusst werden. Des weiteren überprüfe ich auch wie bei vielen Umfragen auf "überraschende" Korrelationen bspw. Alter, Geschlecht oder aber auch die Branche. Liebe Grüße Jenny
Clean Code Development in der Diskussion

Die Gruppe lädt alle Softwareentwickler ein, darüber zu diskutieren, wie die Wandelbarkeit von Software und die Produktivität von Teams verbessert werden können. Sie schließt an das an, was die Initiative http://clean-code-developer.de an Bausteinen für sauberen Code zusammengetragen hat.

Aber natürlich soll die Diskussion dort nicht stehenbleiben. Wie kann die Softwareentwicklung über die bisherigen Ideen von Clean Code und Agilität hinausgehen? Lasst uns darüber nachdenken...

Wir sind gespannt auf eure Beiträge!

-Ralf Westphal & Stefan Lieser, Gruppenmoderatoren

PS: Laut Entscheidung der Gruppenmitglieder soll die Gruppe frei von Werbung sein. Offensichtlich kommerzielle & werbende Beiträge von Gruppenmitgliedern werden daher ohne Vorankündigung gelöscht und die, die sie einstellen blockiert. Dasselbe gilt für Stellenanzeigen.