Why
Retrieving data is usually the most time consuming part of a calculation. The method api.currentItem() is the best performing way and should be the first option to get data for the current item being processed in your item list (i.e. PLI, PGI or CFS). It only accesses data already loaded in memory of the calculation engine without the need of an additional database query. The alternatives are api.currentContext(sku) and QueryAPI.
Caution: api.currentItem() has a special behavior in 1st execution of a line item - see the API doc for detail.
When to Use
In the line item logic calculations (PLI, PGI, CFS) if you need to access the data of the current item being processed. You can then retrieve an attribute using:
return api.currentItem("attributeLabel")
This is a recommended practice because the current item is already loaded in the memory of the calculation engine and api.find() would perform an additional database query for each line item which would cause poor performance for larger PLI or PGI sets.
When Not Possible to Use
Utilize QueryAPI to query the product master data. You may consider join of other tables.