제가 이 질문을 한 이유는 사실 Zhihu에서 다음 답변을 읽었기 때문입니다.
PHP 프로그래밍에서 흔히 발생하는 낮은 수준의 오류는 무엇입니까?
http://www.zhihu.com/question...
잘못된 접근 방식 언급:
Class를 네임스페이스로 사용하면 메소드는 Class의 함수일 뿐입니다
이렇게 하면 뭐가 문제인가요?
제가 이 질문을 한 이유는 사실 Zhihu에서 다음 답변을 읽었기 때문입니다.
PHP 프로그래밍에서 흔히 발생하는 낮은 수준의 오류는 무엇입니까?
http://www.zhihu.com/question...
잘못된 접근 방식 언급:
Class를 네임스페이스로 사용하면 메소드는 Class의 함수일 뿐입니다
이렇게 하면 뭐가 문제인가요?
절차적 구조 프로그래밍을 사용하는 것이 "이념적 고형화"라고요? "객체 지향"을 보편적인 "일률적"으로 취급하는 것이 "팔다리 에세이 같은 이념적 고형화"라고 생각하고 제안하기도 했습니다 객체의 "모든 극단적인 상황에 맞는" 프로그래밍 요구 사항을 완벽하게 지향합니다. 객체 사고의 가장 큰 이점은 캡슐화로 명명 충돌이 있는 경우 관련 기능을 캡슐화할 수 있다는 것입니다. 그렇지 않은 경우 클래스 이름이 충돌하는 경우 여러 함수의 접두사를 수정해야 하므로 클래스를 네임스페이스로 사용하는 데 아무런 문제가 없습니다.
PHP 자체를 살펴보면, PHP에서 제공하는 함수에는 함수 기반 캡슐화와 클래스 기반 캡슐화라는 두 가지 유형이 있습니다. 함수 기반 캡슐화에는 일반적으로 사용되는 문자열 연산 함수와 배열 연산 함수 등이 포함됩니다. 기반 캡슐화에는 SPL 라이브러리 등이 포함됩니다. 객체지향 프로그래밍이 절차적 프로그래밍보다 더 진보되고 편리해야 한다고 말할 수 있습니까? 정말 객체지향 프로그래밍에 열중한다면 배워야 하지 않겠습니까? 모든 라이브러리가 클래스 캡슐화를 기반으로 하며 "완전한 객체 지향"인 Java?Java 마스터 Wang Yin은 객체 지향 프로그래밍에 대해 다음과 같이 생각합니다.
데이터 액세스 방식인 '객관적 사고'에는 특정한 이점이 있습니다. 그러나 "객체 지향"("지향"이라는 단어가 추가됨)은 원래 좋은 아이디어를 횡설수설하고 터무니없으며 과도하게 사용한 것입니다. 많은 객체 지향 언어는 "모든 것이 객체이다"라고 주장하고, 모든 기능을 소위 객체, 즉 "메서드"에 넣고, 일반적인 함수를 "정적 메서드"라고 부릅니다. 실제로 추상화가 필요한 경우는 거의 없으며 개체에 내장되고 데이터와 밀접하게 통합되는 "메서드"를 사용해야 합니다. 다른 경우에는 실제로 데이터 간의 변환 작업을 표현하고 싶을 수도 있습니다. 이는 일반 함수를 사용하여 표현할 수 있으며 그렇게 하는 것이 더 간단하고 직접적입니다. 모든 기능을 객체에 넣는 것은 말보다 수레를 놓는 것과 같습니다. 기능 자체는 객체에 속하지 않고 객체에 대한 변환 작업일 뿐이기 때문입니다. 대부분의 함수는 객체와 독립적이므로 "메서드"라고 부를 수 없습니다. 모든 기능을 원래 속하지 않은 개체에 강제로 적용하고 모두 "메서드"로 처리하면 개체 지향 코드 논리가 지나치게 복잡해집니다. 아주 간단한 생각이지만 이를 명확하게 표현하려면 많은 우회를 거쳐야 합니다.자신이 사용하는 '객체지향 언어'의 장점 중 상당수가 절차적 언어에서 계승되었다는 사실을 아직도 많은 사람들이 모르고 있습니다. 대부분의 객체 지향 언어에는 일류 기능을 구현하기 위한 올바른 메커니즘이 부족합니다. Java 언어는 극단적이므로 함수가 데이터로 전달되는 것을 전혀 허용하지 않습니다. 모든 함수를 클래스로 캡슐화하고 "메서드"라고 불러야 하지만 앞서 말했듯이 이것은 납치입니다. Java에 "디자인 패턴"이 너무 많은 이유는 일류 기능이 부족하기 때문입니다. 일류 기능을 갖게 되면 이러한 디자인 패턴은 대부분 필요하지 않게 됩니다.
개인적인 생각입니다.
가장 큰 문제는
그 과정에서 빠져나오지 못하고, 인터페이스는커녕 객체지향 프로그래밍이 실제로 어떤 변화를 가져오는지, 객체지향 프로그래밍의 진짜 장점이 무엇인지 이해하지 못한다는 점이다. 지향 프로그래밍. 思想的固化