Java의 ReactiveX 구현 인 RxJava ( Rx 및 Reactive Extensions 라고도 함)를 막 시작했습니다 . 실제로 나를 놀라게 한 것은 RxJava의 Flowable 클래스 의 거대한 크기였습니다 . 460 개의 메소드가 있습니다!
공정하게 :
오버로드 된 메소드가 많으므로 총 메소드 수에 상당한 영향을 미칩니다.
아마도이 클래스는 분리되어야하지만 RxJava에 대한 나의 지식과 이해는 매우 제한적입니다. RxJava를 만든 사람들은 분명히 매우 똑똑하며, 많은 방법으로 Flowable 을 만들기 위해 유효한 인수를 제공 할 수 있습니다 .
반면에 :
RxJava이의 Java 구현 마이크로 소프트의 반응성 확장 , 그리고 심지어이없는 유동성 이 맹목적으로 기존의 클래스를 포팅하고 자바를 구현하는 경우가 아니라, 그래서 클래스를.
[ 업데이트 : 이탤릭체의 이전 요점은 사실 부정확합니다. 400 개가 넘는 메서드를 가진 Microsoft의 Observable 클래스가 RxJava의 Observable 클래스 의 기초로 사용되었으며 Flowable 은 Observable 과 비슷 하지만 대량의 데이터에 대한 역 압력을 처리합니다. RxJava 팀 은 기존 클래스를 포팅했습니다. 이 포스트는 RxJava의 Flowable 클래스가 아닌 Microsoft 의 Observable 클래스 의 원래 디자인에 도전 한 것 입니다.]
RxJava는 3 년이 조금 넘었 기 때문에 ( SOLID ) 클래스 디자인 원칙 에 대한 지식이 부족하여 코드가 잘못 디자인 된 예는 아닙니다 ( Java의 초기 릴리스와 마찬가지로).
Flowable 만큼 큰 클래스 의 경우 디자인이 본질적으로 잘못된 것처럼 보이지만 그렇지 않을 수도 있습니다. 이 SE 질문에 대한 답변 하나 의 클래스 메소드 수에 대한 제한은 무엇입니까? 그 대답은 " 필요한 방법이 많다 "는 것입니다.
언어에 관계없이이를 지원하기 위해 정당한 수의 메소드가 필요한 클래스가 분명히 있습니다. 클래스는 더 작은 것으로 쉽게 분류되지 않고 상당한 수의 특성과 속성을 갖기 때문입니다. 예를 들어 문자열, 색상, 스프레드 시트 셀, 데이터베이스 결과 세트 및 HTTP 요청입니다. 클래스가 그러한 것들을 표현할 수있는 수십 개의 메소드를 가지고 있다고해서 무리가없는 것 같습니다.
그러나 Flowable에는 실제로 460 개의 메소드가 필요 합니까 , 아니면 너무 클 경우 클래스 설계가 잘못 되었습니까?
[분명히 말하면 :이 질문은 일반적으로 God 객체가 아닌 RxJava의 Flowable 클래스 와 관련이 있습니다 .]