[ 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 interfaces
Data
: Default Repositories
Data
: NHibernate
Mappings
Data
: SQL
queriesData
: NHibernate
Repositories
(optional)Data
: Other Repositories
(optional)Data
: Other Mappings
(optional)Data
: Helpers
Business
: LinkTo
(bidirectional relationship syncing)Business
: Unlink
(bidirectional relationship syncing)Business
: Cascading
: DeleteRelatedEntities
Business
: Cascading
: UnlinkRelatedEntities
Business
: Enums
Business
: Resource strings
Business
: EnumExtensions
Business
: Validators
Delete
Validators
tooWarning
Validators
(optional)Business
: SideEffects
Business
: Facades
Business
: Extensions
Business
: RepositoryWrappers
Business
: Dtos
(optional)Business
: Calculations
Business
: Visitors
Business
: Factories
(optional)Business
: EntityWrappers
(optional)Business
: Other Helpers
(optional)Presentation
: ViewModels
Item
ViewModels
ListItem
ViewModels
(some may only need an IDAndName
DTO
)Lookup
ViewModel
List
ViewModels
Detail
ViewModels
DocumentViewModel
(optional)Presentation
: ToViewModel
WithRelatedEntities
formsToListItemViewModel
ToLookupViewModel
ToScreenViewModel
ToDocumentViewModel
(optional)CreateEmptyViewModel
(not every ViewModel
needs one)Presentation
: ToEntity
WithRelatedEntities
formsViewModel
DocumentViewModel
(optional)Presentation
: Presenters
List
Presenters
Detail
Presenters
Edit
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.