Quels sont les avantages et les inconvénients de l'utilisation interfaces fluides dans Delphi ?
Les interfaces fluides sont censées améliorer la lisibilité, mais je suis un peu sceptique quant au fait d'avoir un long LOC qui contient beaucoup de méthodes enchaînées.
Y a-t-il des problèmes de compilateur ?
Y a-t-il des problèmes de débogage ?
Y a-t-il des problèmes d'exécution ou de traitement des erreurs ?
Les interfaces fluides sont utilisées, par exemple, dans les domaines suivants TStringBuilder , THTMLWriter et TGpFluentXMLBuilder .
Mis à jour :
David Heffernan a demandé quelles étaient les questions qui me préoccupaient. J'y ai réfléchi, et la question générale est la différence entre "spécifier explicitement comment faire" et "laisser le compilateur décider comment faire".
AFAICS, il n'y a aucune documentation sur la façon dont les méthodes enchaînées sont traitées par le compilateur, ni aucune spécification sur la façon dont le compilateur devrait traiter les méthodes enchaînées.
Sur cet article on peut lire comment le compilateur ajoute deux paramètres supplémentaires aux méthodes déclarées comme fonctions, et que la convention d'appel standard met trois paramètres dans le registre et les suivants sur la pile. Une "méthode de fonction fluide" avec 2 paramètres utilisera donc la pile, alors qu'une "méthode de procédure ordinaire" avec 2 paramètres n'utilise que le registre.
Nous savons également que le compilateur fait un peu de magie pour optimiser le binaire (par ex. chaîne de caractères comme résultat de la fonction , commande d'évaluation , ref to local proc ), mais parfois avec des effets secondaires surprenants pour le programmeur.
Ainsi, le fait que la gestion de la mémoire, de la pile et des registres soit plus complexe et que le compilateur puisse faire de la magie avec des effets secondaires non intentionnels me semble plutôt suspect. D'où la question.
Après avoir lu les réponses (très bonnes), ma préoccupation est fortement réduite mais ma préférence reste la même :)