Je travaille sur un jeu. La vue, le fil et le moteur sont terminés. Maintenant, je vais dans comment, par exemple, définir les coordonnées de mon bitmap.Évitez les getters/setters internes - Jeu
Je l'ai fait avec succès en utilisant la méthode getters/setters. J'ai lu sur le web la plupart des bons développeurs de jeux qui disent que "rendre votre variable membre public" et tout ça. Depuis que j'ai lu la section Évitez les internes Getters/Setters au http://developer.android.com/guide/practices/design/performance.html, j'ai commencé à me demander: Comment puis-je changer ma classe Coordinates pour y parvenir sans "setters" par exemple?
Maintenant mon regard Coordonnées de classe comme:
package com.mygame.mygame;
public class Coordinates {
int x;
int y;
Coordinates instance = null;
public Coordinates getInstance(){
if(instance == null){
instance = new Coordinates();
}
return instance;
}
public Coordinates() {
}
public int getX() {
return x;
}
public void setX(int value) {
x = value;
}
public int getY() {
return y;
}
public void setY(int value) {
y = value;
}
}
Comment dois-je changer mon code pour y parvenir? Les appels de méthode sont chers, mais je n'ai toujours aucune idée de la façon de restructurer mon code actuel sans les getters et les setters.
MISE À JOUR
public GameEngine getInstance(){
if(instance == null){
instance = new GameEngine(resources,view);
}
return instance;
}
MISE A JOUR 2
GameEngine
static Resources res;
static GameView view;
static GameEngine instance = null;
public static GameEngine getInstance(Resources localResources, GameView localView){
view = localView;
res = localResources;
if(instance == null){
instance = new GameEngine(); //Init-stuff in the GameEngine
}
return instance;
}
et mon Gameview
static GameEngine engine;
public GameView(Context localContext) {
//Other stuff
engine = GameEngine.getInstance(context.getResources(), this);
//Other stuff
}
Merci d'avance!
Wow! Ça a du sens! Mais, est-ce que c'est la façon de le faire? Les appels de méthode ne sont-ils pas chers dans ces perspectives aussi? Eh bien, j'ai les appels de méthode dans mon moteur. – Curtain
C'est la pratique normale, oui. En ce qui concerne le coût, les appels à la méthode getter/setter sont particulièrement bon marché, c'est plus une question de style. Mais dans une machine avec seulement quelques ressources et peu ou pas d'optimisations JIT comme les téléphones mobiles, j'imagine que chaque optimisation est plus que bienvenue. – BalusC
Eh bien d'accord, alors c'est mon chemin à parcourir alors. J'ai mis à jour mon code avec un morceau de code de mon GameEngine. Cette Instance est-elle inutile aussi? – Curtain