PHP+Java的开发经验:不要太面向对象_PHP教程
说起面向对象,现在很多语言多少都有一些。Java是传统的面向对象语言,PHP也有一些面向对象,但不是很好。完全的面向对象在具体的项目中(本文是Web开发项目),有时候其实并不是最好的选择。本文作者最终选择了PHP+Java的一个模式,并分享了一些自己的经验。
我较早接触了C++(高中),也较早接受了面向对象思想。面向对象思想更接近人的思考方式,其封装、继承等特性也常常能够简化一些工作,最重要的是思路看起来清晰多了。我对面向对象的思想深信不疑,直到有一天,我在WEB项目中陷入困惑。
我以前的工作也都是WEB开发相关的,通常项目里都是接口、实现,service层,DAO层这个样子。久而久之,就习惯了这种模式。后来,我开始自己做网站(自己运营),也沿用这种模式,花了一阵子时间把东西弄出来,可以跑了,问题也随之而来了。大家都知道,类似门户网站这样的东西,尤其是成长期的网站,可能会经常面对一些变更、扩展。它不像企业项目或是以稳定模式运营的网站,可以一套写好的程序一直用下去。可是JAVA的东西改动起来有点麻烦。
第一:项目里用了很多接口,业务变更有不少时候还要动接口。也许有人会说,这是因为需求没做好。是的,可以这么认为,但有个前提:需求根本没法一步到位,否则网站也别跑了,等需求分析做好,花都谢了。回忆一下这个经典的流程:要增加一个特性(页面部分暂不讨论),先增加或修改一个service接口;然后增加或修改其实现;接着视需要可能还要再增加或修改一个DAO层接口,对应的要增加或修改其实现;最后,我们真正要改的,往往只是一个SQL语句。
这一系列流程太过繁琐了。门户网站基本是展示信息的,它的业务逻辑,说到底基本上是SQL语句体现出来的。你想想看,网站上显示什么东西,怎么排序,怎么聚合,这些不都对应着相应的SQL语句么?如果你非要把DAO层写成基本的增删改,然后在service层大作文章去实现本来对应着一个SQL语句的业务罗辑,这有什么意思呢?纯粹为了分层而分层?为了面向对象而面向对象?更不用说那一堆接口,平白增加工作量。我当然不会否认接口在编程思想中的意义,只是传统的JAVA WEB编程中的那一堆接口,是否真正是一个合理应用呢?我看很多情况下不是。我后来用PHP重写我的项目中的一大部分功能,只用了几天的时间,没有分层,没有接口。这样带来的工作效率的提升,真是惬意!
第二:JAVA WEB项目的发布通常需要重启服务,造成WEB运行中断。不少人在讨论热部署,我不知道热部暑最终能达到怎样一个水平,但我想信无法达到像PHP那样随时修改文件随时生效。为了不中断服务,我通常选择做个集群,轮流发布。这样虽然仍旧有可能产生一些问题,但比中断应用好多了。可是集群会带来发布上的麻烦,集群本身也未必是我真正需要的。
随之而来的还有一些小问题,比如如果我项目中包含一些存储大量文件的文件夹,在发布的时候又要特别处理,这样很不爽。即使做软链接,发布时也免不了要做额外工作。这些问题,当然我想信会有更好的解决办法,我个人目前仍在探索中。
面对上述这些问题,我最终不再坚守面向对象。我把项目改成了前PHP后JAVA的形式。PHP做前端显得灵活多了,整个改版,PHP的逻辑部分没花多少时间,时间都用在了页面设计上;JAVA的后端又能保证稳定高效,易于安全设计。由此,我最终发出了“不要太面象对象”这一感叹。需求决定一切,跟着别人的思想走,跟入邪教没区别。
问题也还并没有结束,对JAVA后端部分,我还在探索一个基于插件式的可以热加载、缷截插件的CMS后端系统。呵,不能因为上面的原因把面象对象一棒子打死。
不过不管怎样,看了作者的描述,倒是不妨试试PHP+Java的组合:看看放弃一些面向对象能够带来些什么好处吧。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이 AI 지원 프로그래밍 도구는 급속한 AI 개발 단계에서 유용한 AI 지원 프로그래밍 도구를 많이 발굴했습니다. AI 지원 프로그래밍 도구는 개발 효율성을 높이고, 코드 품질을 향상시키며, 버그 발생률을 줄일 수 있습니다. 이는 현대 소프트웨어 개발 프로세스에서 중요한 보조자입니다. 오늘 Dayao는 4가지 AI 지원 프로그래밍 도구(모두 C# 언어 지원)를 공유하겠습니다. 이 도구가 모든 사람에게 도움이 되기를 바랍니다. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot은 더 빠르고 적은 노력으로 코드를 작성하는 데 도움이 되는 AI 코딩 도우미이므로 문제 해결과 협업에 더 집중할 수 있습니다. 힘내

세계 최초의 AI 프로그래머 데빈(Devin)이 태어난 지 한 달도 채 안 된 2022년 3월 3일, 프린스턴 대학의 NLP팀은 오픈소스 AI 프로그래머 SWE-에이전트를 개발했습니다. GPT-4 모델을 활용하여 GitHub 리포지토리의 문제를 자동으로 해결합니다. SWE-bench 테스트 세트에서 SWE-agent의 성능은 Devin과 유사하며 평균 93초가 걸리고 문제의 12.29%를 해결합니다. SWE-agent는 전용 터미널과 상호 작용하여 파일 내용을 열고 검색하고, 자동 구문 검사를 사용하고, 특정 줄을 편집하고, 테스트를 작성 및 실행할 수 있습니다. (참고: 위 내용은 원문 내용을 약간 조정한 것이지만 원문의 핵심 정보는 그대로 유지되며 지정된 단어 수 제한을 초과하지 않습니다.) SWE-A

Go 언어 개발 모바일 애플리케이션 튜토리얼 모바일 애플리케이션 시장이 지속적으로 성장함에 따라 점점 더 많은 개발자가 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 모색하기 시작했습니다. 간단하고 효율적인 프로그래밍 언어인 Go 언어는 모바일 애플리케이션 개발에서도 강력한 잠재력을 보여주었습니다. 이 기사에서는 Go 언어를 사용하여 모바일 애플리케이션을 개발하는 방법을 자세히 소개하고 독자가 빠르게 시작하고 자신의 모바일 애플리케이션 개발을 시작할 수 있도록 특정 코드 예제를 첨부합니다. 1. 준비 시작하기 전에 개발 환경과 도구를 준비해야 합니다. 머리

Android 개발은 바쁘고 흥미로운 작업이며, 개발에 적합한 Linux 배포판을 선택하는 것이 특히 중요합니다. 많은 Linux 배포판 중에서 Android 개발에 가장 적합한 배포판은 무엇입니까? 이 기사에서는 이 문제를 여러 측면에서 살펴보고 구체적인 코드 예제를 제공합니다. 먼저 현재 인기 있는 여러 Linux 배포판(Ubuntu, Fedora, Debian, CentOS 등)을 살펴보겠습니다. 이들은 모두 고유한 장점과 특징을 가지고 있습니다.

MySQL 쿼리 결과 배열을 객체로 변환하는 방법은 다음과 같습니다. 빈 객체 배열을 만듭니다. 결과 배열을 반복하고 각 행에 대해 새 개체를 만듭니다. foreach 루프를 사용하여 각 행의 키-값 쌍을 새 개체의 해당 속성에 할당합니다. 개체 배열에 새 개체를 추가합니다. 데이터베이스 연결을 닫습니다.

빠르고 효율적인 프로그래밍 언어인 Go 언어는 백엔드 개발 분야에서 널리 사용됩니다. 그러나 Go 언어를 프런트엔드 개발과 연관시키는 사람은 거의 없습니다. 실제로 프런트엔드 개발에 Go 언어를 사용하면 효율성이 향상될 뿐만 아니라 개발자에게 새로운 지평을 열어줄 수도 있습니다. 이 기사에서는 프런트엔드 개발에 Go 언어를 사용할 수 있는 가능성을 살펴보고 독자가 이 영역을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 전통적인 프런트엔드 개발에서는 사용자 인터페이스를 구축하기 위해 JavaScript, HTML, CSS를 사용하는 경우가 많습니다.

대규모 모델의 지속적인 최적화를 기반으로 하는 LLM 에이전트(이러한 강력한 알고리즘 엔터티)는 복잡한 다단계 추론 작업을 해결할 수 있는 잠재력을 보여주었습니다. 자연어 처리부터 딥 러닝까지 LLM 에이전트는 인간의 언어를 이해하고 생성할 수 있을 뿐만 아니라 전략을 수립하고 다양한 환경에서 작업을 수행하며 심지어 API 호출 및 코딩을 사용하여 빌드까지 할 수 있어 점차 연구 및 산업의 초점이 되고 있습니다. 솔루션. 이러한 맥락에서 AgentQuest 프레임워크의 도입은 LLM 에이전트의 평가 및 발전을 위한 모듈식 벤치마킹 플랫폼을 제공할 뿐만 아니라 연구원에게 이러한 에이전트의 성능을 추적하고 개선할 수 있는 강력한 도구를 제공합니다. 좀 더 세분화된 수준

"VSCode 이해: 이 도구는 어떤 용도로 사용됩니까?" 》프로그래머로서 초보자이든 숙련된 개발자이든 코드 편집 도구를 사용하지 않으면 할 수 없습니다. 많은 편집 도구 중에서 Visual Studio Code(약칭 VSCode)는 가볍고 강력한 오픈 소스 코드 편집기로 개발자들 사이에서 매우 인기가 높습니다. 그렇다면 VSCode는 정확히 어떤 용도로 사용되나요? 이 기사에서는 VSCode의 기능과 사용법을 자세히 살펴보고 독자에게 도움이 되는 구체적인 코드 예제를 제공합니다.
