proton-mail-android/docs/0006-model-class-naming-con...

1.5 KiB

Model class naming conventions

  • Status: Accepted
  • Deciders: Marino, Zorica, Stefanija, Davide, Tomasz, Maciej
  • Date: 20/09/2021

Context and Problem Statement

We would like to have well defined conventions when it comes to model class naming in all the application layers, for the sake of consistency.

Considered Options

For the API models:

  • xRequest/xResponse and xResultResponse, with an optional xResultResponse as a wrapper for the model, if needed, e.g. GetMessageRequest, GetMessageResponse and GetMessageResultResponse (contains GetMessageResponse),
  • xRequest/xApiModel and xResponse as a wrapper for the model, if needed, e.g. GetMessageRequest, GetMessageApiModel and GetMessageResponse (contains GetMessageApiModel).

For the DB models:

  • xEntity e.g. MessageEntity,
  • xDatabaseModel e.g. MessageDatabaseModel.

Decision Outcome

  • The presentation layer models will use UiModel suffix, e.g. MessageUiModel.
  • The domain layer models will have no suffix, e.g. Message.
  • The database models will have Entity suffix, e.g. MessageEntity.
  • The API request models will have Request suffix, e.g. GetMessageRequest.
  • The API response models will have Response suffix, e.g. GetMessageResponse.
  • The API response wrapper models will have ResultResponse suffix, e.g. GetMessageResultResponse.

Consequences

  1. All the new models declared in the application should follow the conventions defined above.