Coding Guideline » History » Revision 8
Revision 7 (Carsten Rose, 06.11.2022 10:38) → Revision 8/17 (Carsten Rose, 06.11.2022 18:34)
h1. Coding Guideline h2. QFQ General * http://docs.qfq.io/en/master/CodingGuideline.html h2. I-MATH * Tabelle: * *Name*: Camel case, erster Buchstabe *gross*, kein Underscore. Bsp: @FormElement@ * Im ERD sollte bei jeder Tabelle auch die zu verwendende Abkürzung genannt werden. Bsp: @FormElement - fe@ * Sind in * Spalten: * *Name*: Camel case, erster Buchstabe *klein*, kein Underscore. Bsp: @formId@ * *Erste Spalte*: @id@, Primary Key. * *Vorletzte Spalte*: @created@, datetime, default: current timestamp * *Letzte Spalte*: @modified@, datetime, default: current timestamp, on update current timestamp * Wird auf einen Primary Key einer anderen Tabelle verwiesen, ergibt sich der Name aus <Kuerzel><Id>. Bsp: @pId@. * Gibt es in einer Tabelle a) mehrere Spalten auf die gleiche Fremdtabelle (und muessen daher unterschiedlich sein) oder b) soll der Spaltenamen klarer beschreiben, kann eine Spezifizierung angehängt werden. Bsp: @pIdApplicant@, @pIdHead@. _Auf jeden Fall steht das @pId@ am Anfang_ . * Formular * *Name*: Camel case, erster Buchstabe *klein*, kein Underscore. Bsp: @formElement@ * Sind in einer Instanz mehrere Tools, sollten die Forms anhand eines Prefixes unterschieden werden. Bsp: @dissReview@, @maReview@. * Spalte 'reference' * *Name*: Als Vorbereitung um unterschiedliche Tools aus verschiedenen Instanzen mergen zu koennen, wird empfohlen die Referenz Records mit einem eindeutigen Prefix zu versehen. Bsp: @my_exercise_group@ * BPMN * Zeichnung via DrawIO * ERD * Zeichnung via DrawIO * Constants * Define constants in @Extensions > QFQ > Custom > ...@ * Dynamic values under @Extensions > QFQ > Dynamic > ...@ * QFQ content record * Name the record in the header field with: * Regular content: [QFQ] ... * Content in the left column: [QFQ,L] ... * Content in englisch: [QFQ,E] ... * The first lines should be comments, explaining what the record does and list *all* all passed variables (STORE_SIP, STORE_USER). variables. Optional variables are indicated by using STORE_EMPTY or STORE_ZERO: <pre> # # Shows list of Persons living in {{country:SE}} # # {{country:SE}} # </pre> * Normalize variables: A good practice is to define all possible STORE_SIP Parameter in a SQL at the beginning and copy them to STORE_RECORD: <pre> 10 { # Normalize variables sql = SELECT '{{country:SE}}' AS _country # List selected persons per country 20.sql = SELECT p.name FROM Person AS p WHERE p.country LIKE '{{country:R}}' } </pre> * Always comment the queries like shown above. * Indention are two spaces and reflect the meaning. Example: A _WHERE_ clause is a child of a _SELECT_ , an _AND_ statement is a child of a _SELECT_ or _LEFT JOIN_. <pre> 10 { # All persons sql = SELECT p.name , GROUP_CONCAT(adr.email) FROM Person AS p LEFT JOIN address AS adr ON adr.pId=p.id AND adr.type='email' WHERE p.type='employee AND CURDATE() < p.end GROUP BY adr.pId } </pre> * QFQ Form * Mandatory SIP parameter should to be mentioned in Form.requiredNew and/or Form.requiredEdit. * If the title of a FormElement isn’t descriptive enough, use tooltip, note or extraButtonInfo to explain to a user. * Every Form should show a descriptive title to identify the task and current record. E.g. Not ‘Person’ but ‘Person: John Doe’. * Often the length of a pill title if not sufficient, use a tooltip to give a more descriptive hint.