I have module where I need to make the line item formula dependent on user defined criteria. For example, the user selects the material they wish to be use as part of a price quote and the formula for the line item cost calculation changes based on that material, as different materials have different yields. Should I use Dynamic Cell Access or is there a better way to do this?
DCA is about security; I'm not clear how what you are describing requires security. This sounds more like a list of materials in a dropdown list that affects the numerical results of a line item formula.
As @schulze said, DCA is all about read / write / invisible access, and is not related to calculations
On a wider context of "different calculation for different elements (e.g. products), we often see multiple level IFs as and SELECTs as users change the logic for different list elements.
This is not a good appraoch as multiple level IFs are not good for performance. One should look at what actually changes for each element and model those using LOOKUPs and mapping modules.
In extreme cases where there is a complex formula, a good appraoch is the calculate the different variables for all products and then use a line item subset to pull those into the target module, again using a LOOKUP module. This is especially good when the usersd are able to choose the calculation method they want