Logo LAMM


Getting Starting

Example

Template For LAMM

  • How should I create projects on this architecture? (Github Template)

Documentation

  • In general, I will try to describe the architecture in detail (Modification of MVVM)

General Rules

Architectural Objects

We create and write architectural objects in the order in which it will be faster and better for the developer to run all this code. Example: We wrote the design and basic setup in the 'NamedVM' class, and then we started writing 'DataForNamed' to add simple logic for the data loading simulator and displaying a list, and maybe add error, and only then we write 'Model', 'ListModel' to show the concretive data in the list that we need it, and at the end we write 'NamedService' and 'OperationEEModel(EEWhereNamed)EEFromNamedEEParameterNamedService' to load real data (We take into account that we will return to these objects. Example: you write 'DataForNamed' and started writing a 'Model', and then returned to 'DataForNamed' to add this 'Model'.)

123456 NamedUtility

  1. NamedVM
  2. DataForNamed
  3. Model
  4. ListModel
  5. NamedService
  6. [OperationEEModel(EEWhereNamed)EEFromNamedEEParameterNamedService](https://github.com/antonpichka/library_architecture_mvvm_modify/tree/main/package#operationeemodeleewherenamedeefromnamedeeparameternamedservice)

NamedUtility

  • The same rules as the 'Model'
  • Type classes (KeysNamedServiceUtility, KeysNamedUtility, NamedUtility):
    • KeysNamedServiceUtility - a class where the keys of a specific service are stored, and the keys are distributed across models
      • Example - Model 'IPAddress', Key 'Ip' (static const String iPAddressQQIp = "ip")
        • QQ - needed as a separator that helps to quickly understand what this constant does
    • KeysNamedUtility - a class whose keys belong to other classes and are attached to methods and can be used to store errors and various successes, etc.
      • Example - Class 'DataForAntiDDosSystemView', Key 'GetExceptionInStringWhereNotEqualsParametersCodeAndInputCode' (static const String dataForAntiDDosSystemViewQQGetExceptionInStringWhereNotEqualsParametersCodeAndInputCode = "dataForAntiDDosSystemViewQQGetExceptionInStringWhereNotEqualsParametersCodeAndInputCode")
        • QQ - needed as a separator that helps to quickly understand what this constant does
    • NamedUtility - it could be anything
      • Example - TimerUtility,InsertUserUtility (To NamedService), etc...

NamedVM

  • How are private methods created in this class ?
    • Minimum and maximum two 'QQ' - needed as a separator that helps to quickly understand what this method does
    • numberQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}
      • How are private methods to private methods created in this class ?
        • numberBranchNumberQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}
          • How are private methods to private methods to private methods created in this class ?
            • numberBranchNumberBranchNumberQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}
    • Example:
      • firstQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}
        • firstBranchOneQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}
          • firstBranchOneBranchOneQQ${InWhatMethod?}QQ${WhichMethodTriggersTheCreationOfAPrivateMethod?}

DataForNamed

  • The same rules as the 'Model'

Model

  • Get:
    • get(Named)(WhereNamed)ParameterNamed:
      • () - optional
      • [] - if available
      • get - required word
      • (Named) - we get primitive type or another model or briefly describe what we are taking
      • (WhereNamed) - describe in as much detail as possible what this method does (#1589F0 And - for iteration)
      • FromNamed - if the method has parameters, then list (#1589F0 And - for iteration)
      • ParameterNamed - what global variables were used (#1589F0 And - for iteration)
      • Method name length - no more than 100 characters (if more than 100, then use numbers (Example - getNamedWhereNamedFromOneParametersTwo))
      • Regarding duplicates - at the end add 'FIRST', 'SECOND', etc...
      • Local variable name - named(WhereNamed)ParameterNamed
  • Void:
    • operationOtherModelOrPrimitiveType (WhereNamed)ParameterNamed
      • () - optional
      • [] - if available
      • operation - insert, update, delete, set, init, etc...
      • OtherModelOrPrimitiveType - if your class has a model list or primitive type list parameter. But if you specify a different model or primitive type in FromNamed then there is no point in specifying that. If you add the same "Model" to your "ListModel" then there is no point in specifying this
      • (WhereNamed) - describe in as much detail as possible what this method does (#1589F0 And - for iteration)
      • FromNamed - if the method has parameters, then list (#1589F0 And - for iteration)
      • ParameterNamed - what global variables were used (#1589F0 And - for iteration)
      • Method name length - no more than 100 characters (if more than 100, then use numbers (Example - operationOtherModelOrPrimitiveTypeWhereNamedFromOneParameterOne))
      • Regarding duplicates - at the end add 'FIRST', 'SECOND', etc...
  • Bool:
    • isWhereNamedParameterNamed:
      • [] - if available
      • isWhereNamed - describe in as much detail as possible what this method does (#1589F0 And - for iteration)
      • FromNamed - if the method has parameters, then list (#1589F0 And - for iteration)
      • ParameterNamed - what global variables were used (#1589F0 And - for iteration)
      • Method name length - no more than 100 characters (if more than 100, then use numbers (Example - isWhereNamedFromOneParametersTwo))
      • Regarding duplicates - at the end add 'FIRST', 'SECOND', etc...
      • Local variable name - isWhereNamedParameterNamed

ListModel

  • The same rules as the 'Model'

NamedService

  • The same rules as the 'Model'

OperationEEModel(EEWhereNamed)EEFromNamedEEParameterNamedService

  • Class names:
    • OperationEEModel(EEWhereNamed)EEFromNamedEEParameterNamedService:
      • Minimum two 'EE'. Maximum four 'EE' - needed as a separator that helps to quickly understand what this class does
      • () - optional
      • [] - if available
      • Operation - insert, update, delete, set, init, etc...
      • EEModel - name model
      • (EEWhereNamed) - describe in as much detail as possible what this class does (#1589F0 And - for iteration)
      • EEFromNamed - if the method has parameters, then list (#1589F0 And - for iteration)
      • EEParameterNamedService - what service do you use (#1589F0 And - for iteration)
      • Global variable names - _operationEEModel(EEWhereNamed)EEFromNamedEEParameterNamedService
  • Methods names:
    • OperationModel(WhereNamed)FromNamedParameterNamedService:
      • () - optional
      • [] - if available
      • Operation - insert, update, delete, set, init, etc...
      • Model - name model
      • (WhereNamed) - describe in as much detail as possible what this class does (#1589F0 And - for iteration)
      • FromNamed - if the method has parameters, then list (#1589F0 And - for iteration)
      • ParameterNamedService - what service do you use (#1589F0 And - for iteration)
      • Local variable names - operationModel(WhereNamed)FromNamedParameterNamedService

Libraries

library_architecture_mvvm_modify
We load all other files into this file, and then use it in the application where we need it Where to use ? - Anywhere