I believe this is language agnostic question - if it's not then please correct me.Let's say I have a class (code snippet is a kind of 'pseudo code')class Car:  private steering_wheel  private engine  public Car(steering_wheel, engine):    this.steering_wheel = steering_wheel    this.engine = engine  public void service():     clean_steering_wheel()     repair_engine()  private void clean_steering_wheel():    this.steering_wheel.do_stuff()  private void repair_engine():    this.engine.do_stuff()which works well! But I could also change private methods a bit and let them use fields (i.e steering_wheel and engine) via arguments, not directly   class Car:  private steering_wheel  private engine  public Car(steering_wheel, engine):    this.steering_wheel = steering_wheel    this.engine = engine  public void service():     clean_steering_wheel(this.steering_wheel)     repair_engine(this.engine)  private void clean_steering_wheel(steering_wheel):    steering_wheel.do_stuff()  private void repair_engine(engine):    engine.do_stuff()Let's assume that all parameters(arguments) are passed by reference.What are the advantages and disadvantages of these solutions? Which is considered as better practice? Which one do you prefer?
Passing fields (instance variables) by arguments (parameters) inside an object - does it make sense?
design patterns;object oriented;object oriented design;coding style;code quality
Sounds very much a judgement call to your specific situation, but a couple considerations come to mind.  If the methods are private, and you don't have any reason to pass the parameter, I would probably avoid it if for no reason other than it being less complex.  You could also argue that there is a performance reason to avoid it, as there is no reason to pass additional parameters on the stack if they aren't needed.   One time I do find that I do pass a member as a parameter is with protected members.   Let's say a child class does something like add a second steering wheel that also needs to be cleaned.  In that case, it could (presumably) re-use the clean_steering_wheel method from the base class and pass a different steering wheel member.