나는이 인용문을 " The Clojure의 기쁨 "에서 찾을 수있다 . 32, 그러나 누군가 지난 주 저녁에 나에게 똑같은 것을 말했고 나는 다른 곳에서도 들었습니다.
[A] 객체 지향 프로그래밍의 단점은 함수와 데이터 사이의 긴밀한 연결입니다.
응용 프로그램에서 불필요한 결합이 나쁜 이유를 이해합니다. 또한 객체 지향 프로그래밍에서도 가변 상태와 상속을 피해야한다는 것이 편안합니다. 그러나 클래스에서 함수를 고수하는 것이 본질적으로 나쁜 이유를 알지 못합니다.
클래스에 함수를 추가하면 Gmail에서 메일에 태그를 지정하거나 폴더에 파일을 고정시키는 것처럼 보입니다. 다시 찾는 데 도움이되는 조직 기술입니다. 당신은 몇 가지 기준을 고른 다음에 같은 것을 합치십시오. OOP 이전에, 우리 프로그램은 파일에 많은 방법이있었습니다. 내 말은, 당신은 어딘가에 기능을 넣어야한다는 것을 의미합니다. 왜 정리하지 않습니까?
이것이 유형에 대한 가려진 공격이라면 입력 및 출력 유형을 함수로 제한하는 것이 잘못되었다고 말하는 이유는 무엇입니까? 나는 그것에 동의 할 수 있는지 확실하지 않지만 적어도 찬반론과 안전 유형 논쟁에 익숙합니다. 이것은 주로 별개의 문제처럼 들립니다.
물론, 때때로 사람들은 그것을 잘못 이해하고 잘못된 수업에 기능을 추가합니다. 그러나 다른 실수와 비교할 때 이것은 약간의 불편 함처럼 보입니다.
따라서 Clojure에는 네임 스페이스가 있습니다. OOP의 클래스에서 함수를 고수하는 것은 Clojure의 네임 스페이스에서 함수를 고수하는 것과 어떻게 다르며 왜 그렇게 나쁩니 까? 클래스의 함수가 반드시 해당 클래스의 멤버에서만 작동하는 것은 아닙니다. java.lang.StringBuilder를보십시오-모든 참조 유형 또는 자동 상자를 통해 모든 유형에서 작동합니다.
PS이 인용문은 내가 읽지 않은 책을 참조한다 : Leda : Timothy Budd, 1995의 Multiparadigm Programming .