Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

This page provides recommended styles for key functional elements.

General

  • Item properties
    • All items in PhixFlow have a description property. We recommend you add a description to any item you create.
      Anybody looking at a model or application will first look at the descriptions of the items within it.  For example, in an analysis model, they should be able to discern the flow and the high-level logic of the model just from the descriptions.
    • In analysis models, the stream description should explain the use of input or output multipliers. This it typically a significant part of any model.
    • Ensure that attributes that represent the same thing in different streams have the same name. PhixFlow needs this when processing merges and for a union in a calculate stream.
  • Formatting expressions
    • Add comments to document your expression using:
      • // for a single line comment
      • /* ... */ to enclose multiline comments
    • Include blank lines between statements
    • Use spaces within expressions
    • Indent sub-clauses by 4 spaces

Naming Conventions

Multi-word stream attribute and pipe names should be in camel case.

...

Tip

Camel case uses an uppercase letter for the start of each sub-word, for example $ThisIsCamelCase. As we recommend having no spaces, this makes the name readable.

Adding Comments

It is always a good idea to add comments to your scripts to explain its steps. Comments help anyone who needs to modify the script in future.

There are two ways to tell PhixFlow that a line is a comment, and can be ignored.

NotationUse for
//

 short comments up to 1 line

/* <comment> */multi-line comments

Comments are not evaluated when the code is run.

Code Block
titleExample 1
/* Get the discount rate that should apply to 
the calls that match the filter conditions */

$discountRate = discount.rate,

// Now apply the discount

$value = $value * ( 1 - $discountRate)


Code Block
titleExample 2
if(_out.AppleHarvestDate < toDate('20210101'), 1,
    /* Evaluates to 1 if AppleHarvest Date is Before 1st January 2021*/

0
    /* and to 0 if it is not */

)

Layout for if() 

if( condition, Statement 1 , // else Statement 2 )

...