Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

  1. CRITICAL: Copy pasting the code is not allowed, functions should be used for the shared functionality

  2. All code reflects the auto-format, see Unified Code Style and How to Auto Format;

  3. always use curly brackets for if, for, while , e.g.:

    if (isCondition) {
      return null
    }
  4. Reformatting of big amount of old code should be done within a separate commit

  5. Follow the Recommended Logic Structure

  6. Use out.SomeElement prior to (deprecated) api.getElement("SomeElement")

  7. Use input.SomeInputName prior to (deprecated) api.input("SomeInputName")

  8. Avoid api.local, api.global where possible, for small amount of data, use a dedicated element - this will help you to trace the logic more easily. Big data can cause a slow down. Forbidden to use in functions (except special meaning like caching).-

  9. Use field names in filters or use api.namedEntities() if possible

  10. Use real data type when declaring the variable instead of def. Mandatory use in functions - both parameters and the return type!

  11. Prevent api.isSyntaxCheck Issues by having AbortSyntaxCheck element in the logic

  12. Keep methods simple. More smaller methods is better than a big one

  13. Use https://pricefx.atlassian.net/wiki/spaces/DEV/pages/2946629934/Input+Builders - mandatory for configurators and header logics, but recommended also for ordinary logics

  14. Smartly use of @Field constants (no use for fields, table names, configurator names in customer projects). Mandatory use for important values used in conditions or in accelerators.

  15. Use api.findLookupTableValues("TableName") instead of api.find("MLTVx", ...)

  16. Use one approach for adding item to the list, do not mix the approaches. Recommendation is to use List << value prior to List.add(value)

  17. Use the same approach for accessing List item, do not mix the approaches. Recommendation is to use List[index] prior to List.getAt(index)

  18. Use the same approach for accessing Map values, do not mix approaches. Recommendation is to use Map.key prior to Map[key] or Map.get(key)

  19. BigDecimal should be the commonly used data type for amount or percentage variables (never use floats for amounts!). Use BigDecimal constants (e.g. 0.0 instead of 0) so you can rely on BigDecimal.

  20. If casting is needed e.g. ?.toBigDecimal() for amounts, do this on the first occurrence of the variable

  21. Use closures (collect, collectEntries, each, eachWithIndex, max, min, inject, sort, etc.) whenever applicable. Note: utilize use of sortBy parameter in api.find() prior to sort() closure for a better performance.

  22. Use "find" (resp. "query") prefix for the name of a function that is querying PB tables (resp. PA datasources/datamarts) Do not mix data querying and calculation in the functions

  23. Use the method library alias when calling several Groovy library function in the element or function: def CurrencyUtils = libs.MainLib.CurrencyUtils

  24. PERFORMANCE: avoid returning big data in an element. Remember: in Groovy, the expression on the last line is the value returned!

  25. Initialize Map directly. E.g. instead of

    def map = [:]
    map["key1"] = "value1"
    map["key2"] = "value2"
    map["key3"] = "value3"

    directly use (and following auto-format):

    def map = [:]
    map["key1"] = "value1"
    map["key2"] = "value2"
    map["key3"] = "value3"
  26. Analogically, initialize List directly. E.g. instead of

    def map = [:]
    map["key1"] = "value1"
    map["key2"] = "value2"
    map["key3"] = "value3"

    directly use (and following auto-format):

    def map = [:]
    map["key1"] = "value1"
    map["key2"] = "value2"
    map["key3"] = "value3"
  27. Split suuuuperlooooong lines

  28. Dot not commit commented code, api.log and api.trace in GIT

  • No labels