[ Draft ]
This checklist might be used if you want to bulk-program the architecture for an application by going through all the layers one by one, or if you want to build a feature and make sure you have not forgotten any technical issues.
Data: Database structureData: Data migrationData: Entity classesData: Repository interfacesData: Default RepositoriesData: NHibernate MappingsData: SQL queriesData: NHibernate Repositories (optional)Data: Other Repositories (optional)Data: Other Mappings (optional)Data: HelpersBusiness: LinkTo (bidirectional relationship syncing)Business: Unlink (bidirectional relationship syncing)Business: Cascading: DeleteRelatedEntitiesBusiness: Cascading: UnlinkRelatedEntitiesBusiness: EnumsBusiness: Resource stringsBusiness: EnumExtensionsBusiness: Validators
Delete Validators tooWarning Validators (optional)Business: SideEffects
Business: FacadesBusiness: ExtensionsBusiness: RepositoryWrappersBusiness: Dtos (optional)Business: CalculationsBusiness: VisitorsBusiness: Factories (optional)Business: EntityWrappers (optional)Business: Other Helpers (optional)Presentation: ViewModels
Item ViewModelsListItem ViewModels (some may only need an IDAndName DTO)Lookup ViewModelList ViewModelsDetail ViewModelsDocumentViewModel (optional)Presentation: ToViewModel
WithRelatedEntities formsToListItemViewModelToLookupViewModelToScreenViewModelToDocumentViewModel (optional)CreateEmptyViewModel (not every ViewModel needs one)Presentation: ToEntity
WithRelatedEntities formsViewModelDocumentViewModel (optional)Presentation: Presenters
List PresentersDetail PresentersEdit Presenters)Save methods in Detail (or Edit) Presenters.MainPresenter (optional)Presentation:
< TODO: Translate to English. >
Er is een structuur waarmee we knopteksten en meldingen in onze applicaties kunnen organiseren. Het doel is om deze teksten maximaal herbruikbaar te maken, vertaalwerk te minimaliseren en correcte teksten te gebruiken. Hiervoor plaatsen we algemene teksten op een bepaalde locatie, domein termen op een andere en specifieke projecten krijgen de overige teksten. Dit kan het aantal teksten drastisch verminderen van 10.000 tot misschien een paar 100.
Momenteel worden resources op allerlei plekken geplaatst met willekeurig hoofdlettergebruik en gebruik van leestekens. En in andere gevallen werden ze helemaal niet gebruikt en stond alles hard op één taal.
Om dit beter aan te pakken, zouden we graag willen dat ontwikkelaars zowel Nederlandse als Engelse teksten toevoegen aan de resource files. Als er twijfel is over het Engels, kun je het misschien een collega vragen.
Hoofdlettergebruik etc. is conform de taalregels van de betreffende taal.
Resources worden met de assemblies meegecompileerd*.
Termen worden zo veel mogelijk hergebruikt. Daarom zijn er plekken bedacht waar de termen thuis horen. Je kunt in deze volgorde op zoek naar een resource die misschien al bestaat:
JJ.Framework.Resources, toegankelijk via de CommonResourceFormatter class.JJ.Framework.Validation, toegankelijk via de ValidationResourceFormatter class.CanonicalResourceFormatter class.ResourceFormatter). Zie JJ.Framework.Resources voor een voorbeeld. Je kunt dan het beste de resources zelf internal te maken en alleen de class die de placeholders vervangt public maken. Hou het geschikt voor meerdere talen, want een creatief met placeholder opgebouwde resource string werkt al gauw niet voor een andere taal.* Resources staan liever niet in een database, omdat het applicaties trager kan maken en kun je de code niet draaien op omgevingen waarbij je geen toegang hebt tot de database. In sommige situaties kun je dan niet compileren zonder toegang te hebben tot een specifieke database. Bovendien geeft mee compileren van resources in specifieke projecten ons de mogelijkheid dubbelzinnige termen anders te vertalen per business domein.