Heiner KückerConstraint Code Generator Java |
|
Home Java-Seite Bit Packed Array ASM Improved heterogene Map, HMap Constraint Code Generator JSP WorkFlow PageFlow FlowControl Page Flow Engine Web Flow Engine Control_and_Command JSP_Spreadsheet Code-Generator für Option-Either-Stil in Java verbesserter Comparator Fluent-Interface Code-Generator auf Basis einer Grammatik Visitor mit Multidispatch for-Schleife mit yield-return Kognitions-Maschine semantisches Netz Domain Parser Codegenerator_für hierarchische Datenstrukturen Expression_Engine Formula_Parser Thread Preprocessor State Transition Engine AspectJ Java_Explorer DBF_Library Kalender_Applet SetGetGen BeanSetGet CheckPackage LineNumbers GradDms Excel-Export StringTokenizer JspDoc JspCheck JSP-Schulung Java Server Pages Struts Ascii-Tabellen- Layouter Ascii-Baum- Layouter Ascii-Art-Fluss- Diagramm- Parser AsciiArt AssignmentMatrix Layouter StringSerial Silbentrennung JDBC_Schlüssel- Generierung bidirektional/ unidirektional gelinkte Liste Java_Sitemap Generator XmlBuilder RangeMap StringFormatter VersionSafe XCopy JTextField CommandLine- ParamReader Bitmap-Grafik MultiMarkable- Buffered- InputStream JavaCache JdomUtil CollectionUtil XML Really Pull Parser Log-Filter Remote-Protokoll Sudoku-Generator Delegation statt Mehrfachvererbung Disjunct Interval Set WebCam_Demo Weiterentwicklung_Java Alaska-XBase++-Seite Projekte Philosophien Techniken Konzepte Sudoku Kontakt / Impressum Links SiteMap Letzte Aktualisierung: 01.04.2013 |
Constraint Code GeneratorCode-Generator für statische Constraint-Prüfung in Java. Der Code-Generator übersetzt Constraint-Expressions, die aus Prädikaten bestehen in Java-Klassen.
Es geht um die Vorbeugung von Programm-Fehlern zur Compile-Zeit.
A and not(B) (A und B sind Prädikate)eignet. interface A{} interface B{} class AB implements A, B {} public void xxMethod( // hier wäre auch ein Objekt der Klasse AB als Parameter gültig, // eine Ablehnung von B kann nicht ausgedrückt werden A a ) {... Der sichere Switch erzwingt die Implementierung des Codes für jeden spezialisierenden Zweig eines Constraints. Ursprungs-Constraint: A or B or C Switch-Definition: case A case B case CDurch den Zwang, eine abstrakte Klasse zu implementieren, ist die Implementierung des Codes für jeden Zweig im Gegensatz zum Java-switch oder if-else-Kaskaden abgesichert. Der Range-Check dient zur Absicherung von Wertebereichen. Sichere Operationen bilden Constraints auf andere Constraints ab (mathematische Abbildungsvorschrift): Ursprungs-Constraint: x > 0 sichere Operation: x + 1 Ergebnis-Constraint: x > 1Um meinen Code-Generator zu verstehen, muss man sich auf die Prüfung des Codes zur Compile-Zeit geistig einlassen (Generics, starke Typen, Schleifen-Invarianten usw) Insofern ist es eine Ergänzung zu Unit-Tests, deckt aber nicht alle Fehlermöglichkeiten ab, welche mit Unit-Tests gefunden werden können. Da es aber zur Compile-Zeit wirkt, ist es eine nützliche Ergänzung zu Unit-Tests. Man kann mit einigen wenigen Constraints anfangen und es dann verstärkt verwenden, eine Big-Bang-Umstellung des Projektes ist nicht nötig. Es ist kein reines Architektur-Thema, sondern ein einfaches Java-Coding-Thema. Hier die Vortragsfolien meines entsprechenden Vortrags bei der Java-User-Group Erlangen-Nürnberg. Wer mich persönlich kennenlernen will, kann mich am 22.03.2013 auf den Stuttgarter-Testtagen sehen.
Im KaffeeKlatsch, dem Magazin für Software-Entwicklung von der Mathema GmbH, Ausgabe 02 / 2013 ist dazu ein Artikel erschienen. Tutorials, Erweiterungen und natürlich Bugfixes folgen in nächster Zeit. Das Programm ist frei und Open Source (free and Open Source). Download der Quelldateien Sourcecode CONSTRAINT_CODE_GENERATOR.zip
Achtung: Erweiterungen und Fixes stelle ich ohne Historie
und ohne Ankündigung hier bereit. Lizenzbedingungen:
Die Programme, Quelltexte und Dokumentationen können ohne
irgendwelche Bedingungen kostenlos verwendet werden. |