Parfois, vous devez écrire un constructeur qui peut échouer. Par exemple, disons que je veux instancier un objet avec un chemin de fichier, quelque chose comme
obj = new Object("/home/user/foo_file")
Tant que le chemin pointe vers un fichier approprié, tout va bien. Mais si la chaîne n'est pas un chemin valide, les choses devraient se casser. Mais comment?
Vous pourriez:
- jeter une exception
- return null object (si votre langage de programmation permet aux constructeurs de renvoyer des valeurs)
- retourne un objet valide mais avec un drapeau indiquant que son chemin n'a pas été correctement défini (ugh)
- autres?
Je suppose que les "meilleures pratiques" de divers langages de programmation implémenteraient cela différemment. Par exemple, je pense que ObjC préfère (2). Mais (2) serait impossible à implémenter en C ++ où les constructeurs doivent avoir void comme type de retour. Dans ce cas, je suppose que (1) est utilisé.
Dans le langage de programmation de votre choix, pouvez-vous montrer comment gérer ce problème et expliquer pourquoi?
void
- ils renvoient un objet.
new
appelle operator new
pour allouer la mémoire, puis le constructeur pour la remplir. Le constructeur ne renvoie rien et new
renvoie le pointeur dont il est issu operator new
. Que "ne retourne rien" implique "retours void
" est à gagner, cependant.