As you mentioned, you have the following three options:
Use getters / setters
As you know, get / set will indicate the state of the object that is accessed several times (usually) during the lifetime of the object. Therefore, if you have a script like "CrucialMethod1" for "CrucialMethodN" consuming this state, then this can be used. In addition, it will also help expose the state from the outside.
Use as parameter for constructor
As a rule, the constructor parameter will “dictate” the state in which the object will be initialized. Therefore, if you have a scenario where "CrucialMethod" may or may not be called, this will not be most appropriate.
Use the method as a parameter
This would be useful in a scenario where "CrucialMethod" acts / transforms (depends) on the passed parameters. This makes it easier to call a method without depending on the state of the parameter.
Your call!
Codex source share