Reputation: 3887
Scenario 1:
public class Game {
public void doSomething(Hero hero, Enemy enemy){
if (hero.IsAlive()){
hero.checkCollisionWith(enemy);
}
}
}
Scenario 2
public class Game {
Hero hero;
Enemy enemy;
public Game(Hero hero, Enemy enemy) {
this.hero = hero;
this.enemy = enemy;
}
public void doSomething() {
if (hero.IsAlive()){
hero.checkCollisionWith(enemy);
}
}
}
Now, under normal circumstances, I guess either would be acceptable, however, in a game-loop that is going to be called 60 times per second, is the first option generally to be avoided? How much of a performance hit is there for passing references through methods that are being called in a loop?
Bear in mind also that this is just an example, in the real project, there would be a lot more of these methods being called and a lot more objects involved.
Would it be wiser to give the game class the references it needs upfront (at construction) rather than constantly passing them about?
Upvotes: 4
Views: 901
Reputation: 7466
Parameter passing in this way is extremely efficient - the difference between calling a function without parameters and one with parameters is negligible.
Especially in the context of a game where the rendering/collisions/AI code is certainly going to be very processor intensive a small difference like this won't matter.
However from a simplicity and elegance of code point of view I think your second solution is more contained, more traditional OOP and readable.
Upvotes: 2