Skip to content

Instantly share code, notes, and snippets.

@justinrlle
Created March 8, 2019 10:23
Show Gist options
  • Save justinrlle/f292ea7a5148829f967fa6a49879b68c to your computer and use it in GitHub Desktop.
Save justinrlle/f292ea7a5148829f967fa6a49879b68c to your computer and use it in GitHub Desktop.
public class MyShittyClass {
public Config modifyRandomlyCurrentConfig() { ... }
public MyShittyClass(Config config) {
this.config = config;
}
// ce constructeur ne passe pas, parce que this() n'est pas le premier appel
public MyShittyClass(File configFile) {
Config config = new ObjectMapper().readToValue(configFile, Config.class);
this(config);
}
// mais celui là, passe, vu que this() est sur la première ligne
public MyShittyClass(File configFile) {
this(new ObjectMapper().readToValue(configFile, Config.class));
}
// this doit être sur la première ligne pour être sur que l'objet est bien
// initialisé avant d'appeler des méthodes de l'objets. Genre pour empêcher le code suivant,
// qui peut faire de la merde
public MyShittyClass(File configFile) {
Config config = modifyRandomlyCurrentConfig();
this(config);
}
// mais dans ce cas là, on a qu'à appeler la fonction dans l'appel à this, nan ?
public MyShittyClass(File configFile) {
this(modifyRandomlyCurrentConfig());
}
// SAUF QUE JAVA SAIT QUE TU FAIS DE LA MERDE ET LE DIT DANS CE CAS LA
// ALORS POURQUOI FORCER LE this/super SUR LA PREMIÈRE LIGNE ???? POURQUOI
// et honnêtement, il devrait y avoir un seul constructeur, qui init tout les champs,
// du moins ceux qui sont obligatoires, et tu as des fonctions statiques qui déterminent
// à partir de leurs args les arguments pour le constructeur :
public static fromFile(File file) {
Config config = new ObjectMapper().readToValue(configFile, Config.class);
return MyShittyClass(config);
}
// monde de merde, je vous dis
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment