Comment écrire des constructeurs qui pourraient ne pas instancier correctement un objet
https://softwareengineering.stackexchange.com/questions/60250
-
31-10-2019 - |
Question
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
- Renvoie un objet NULL (si votre langage de programmation permet aux constructeurs de renvoyer des valeurs)
- retourner un objet valide mais avec un drapeau indiquant que son chemin n'était pas correctement défini (UGH)
- les autres?
Je suppose que les «meilleures pratiques» de divers langages de programmation le mettraient en œuvre différemment. Par exemple, je pense que l'OBJC préfère (2). Mais (2) serait impossible à implémenter en C ++ où les constructeurs doivent avoir un vide comme type de retour. Dans ce cas, je suppose que (1) est utilisé.
Dans votre langage de programmation de choix, pouvez-vous montrer comment vous gérez ce problème et expliquer pourquoi?
Pas de solution correcte