Je viens de commencer avec RxJava , l'implémentation Java de ReactiveX (également connu sous le nom de Rx et Reactive Extensions ). Quelque chose qui m'a vraiment frappé était la taille massive de de RxJava Flowable classe : il a 460 méthodes!
Être juste:
De nombreuses méthodes sont surchargées, ce qui augmente considérablement le nombre total de méthodes.
Peut-être que cette classe devrait être interrompue, mais ma connaissance et ma compréhension de RxJava sont très limitées. Les gens qui ont créé RxJava sont sûrement très intelligents, et ils peuvent sans doute proposer des arguments valables pour choisir de créer Flowable avec autant de méthodes.
D'autre part:
RxJava est l'implémentation Java des extensions réactives de Microsoft , et qui n'a même pas de classe Flowable , il ne s'agit donc pas de porter aveuglément une classe existante et de l'implémenter en Java.
[ Mise à jour: le point précédent en italique est incorrect dans les faits: la classe Observable de Microsoft , qui compte plus de 400 méthodes, a été utilisée comme base de la classe Observable de RxJava , et Flowable est similaire à Observable mais gère la contre-pression pour de gros volumes de données. Ainsi , l'équipe RxJava ont été portage d' une classe existante. Ce poste aurait dû être contester la conception originale de la Observable classe par Microsoft plutôt que de RxJava Flowable classe.]
RxJava n'a qu'un peu plus de 3 ans, donc ce n'est pas un exemple de code mal conçu en raison d'un manque de connaissances sur les bons principes de conception de classe ( SOLID ) (comme c'était le cas avec les premières versions de Java).
Pour une classe aussi grande que Flowable, sa conception semble intrinsèquement erronée, mais peut-être pas; une réponse à cette question SE Quelle est la limite du nombre de méthodes d'une classe? a suggéré que la réponse soit " Avoir autant de méthodes que nécessaire ".
Il est clair que certaines classes ont légitimement besoin d'un bon nombre de méthodes pour les prendre en charge indépendamment de la langue, car elles ne se décomposent pas facilement en quelque chose de plus petit et elles ont un bon nombre de caractéristiques et d'attributs. Par exemple: chaînes, couleurs, cellules de feuille de calcul, jeux de résultats de base de données et requêtes HTTP. Avoir peut-être quelques dizaines de méthodes pour que les classes représentent ces choses ne semble pas déraisonnable.
Mais Flowable a-t-il vraiment besoin de 460 méthodes, ou est-ce si énorme qu'il s'agit nécessairement d'un exemple de mauvaise conception de classe?
[Pour être clair: cette question concerne spécifiquement de RxJava Flowable classe plutôt que des objets Dieu en général.]