C'est vrai que East & West respectant le langage, les deux approches sont parfaitement utilisables (mais on aura vu vers quoi tend ma préférence ^^ ). Mais je doute encore de la viabilité à long terme d'une approche East (à cause du foisonnement de méthodes).
Si tu veux de la rigueur, choisis d'abord un langage fortement et statiquement typé comme Java ou C++.
PHP ou Python ont des typages souples, ce qui veut dire plus de liberté (et de responsabilité) au développeur.
Pour PHP >= 7, aucune des deux méthodes n'aurait vraiment plus de rigueur que l'autre entre East et West, puisque c'est le typehinting qui fixera les libertés aux appels de méthodes et à leurs retours. Je dirai quand même que West sera plus rigoureux car il permet d'une part de forcer le développeur à retourner quelque chose de valide (si le retour est typehinté par GoldCoin, le développeur est forcé de retourner null ou un GoldCoin; en East, le développeur n'y est forcé que s'il n'oublie pas d'appeler la méthode $coinReceiver->getGoldCoin($gold)) et d'autre part de respecter intégralement l'Open/Close principle.
Pour PHP < 7, East est bien plus fermé et verrouillé que West, puisque les "retours" sont typés: on force ce qui était un return à devenir un paramètre de méthode, qui lui peut être typé en PHP < 7. East serait donc potentiellement plus rigoureux.
Mais, si East verrouille plus le développeur grâce au typehinting des return implicites, il ne permet pas de séparer mentalement le fait que la signature de la méthode indique ce à quoi l'objet peut répondre et que le contenu de la méthode décrit comment il y répond. Je pense que cette idée là est plus importante pour progresser qu'une rigueur forcée.
Tout dépend en fait de ce que tu entends pas "rigueur".
Est-ce le fait d'interdire au développeur de faire d'éventuelles conneries (gardiennage)? Ou le fait pour le développeur de bien comprendre le rôle de chacun des éléments qu'il utilise (apprentissage)?
Si tu veux de la rigueur, choisis d'abord un langage fortement et statiquement typé comme Java ou C++.
PHP ou Python ont des typages souples, ce qui veut dire plus de liberté (et de responsabilité) au développeur.
Pour PHP >= 7, aucune des deux méthodes n'aurait vraiment plus de rigueur que l'autre entre East et West, puisque c'est le typehinting qui fixera les libertés aux appels de méthodes et à leurs retours. Je dirai quand même que West sera plus rigoureux car il permet d'une part de forcer le développeur à retourner quelque chose de valide (si le retour est typehinté par GoldCoin, le développeur est forcé de retourner null ou un GoldCoin; en East, le développeur n'y est forcé que s'il n'oublie pas d'appeler la méthode $coinReceiver->getGoldCoin($gold)) et d'autre part de respecter intégralement l'Open/Close principle.
Pour PHP < 7, East est bien plus fermé et verrouillé que West, puisque les "retours" sont typés: on force ce qui était un return à devenir un paramètre de méthode, qui lui peut être typé en PHP < 7. East serait donc potentiellement plus rigoureux.
Mais, si East verrouille plus le développeur grâce au typehinting des return implicites, il ne permet pas de séparer mentalement le fait que la signature de la méthode indique ce à quoi l'objet peut répondre et que le contenu de la méthode décrit comment il y répond. Je pense que cette idée là est plus importante pour progresser qu'une rigueur forcée.
Tout dépend en fait de ce que tu entends pas "rigueur".
Est-ce le fait d'interdire au développeur de faire d'éventuelles conneries (gardiennage)? Ou le fait pour le développeur de bien comprendre le rôle de chacun des éléments qu'il utilise (apprentissage)?