웹 애플리케이션 (PHP) 개발을위한 모범 사례 워크 플로우 도구를 고려할 사항은 무엇입니까? [닫은]


18

나는 더 많은 경험을 가진 사람이 내 대답의 예에 따라 질문을 편집 할 수 있기를 정말로 바라고 있습니다.

  • 버전 관리 사용
  • 테스트 주도 개발
  • 디버깅 코드 (PHP 용 xdebug)
  • UML 다이어그램 사용
  • 유지 보수 가능하고 재사용 가능한 코드에 OOP 사용
  • 신속한 애플리케이션 개발을 위해 프레임 워크 (예 : PHP 용 Zend Framework) 사용

위에서 언급 한 내용이나 다른 내용이 있습니까?

기본적으로 저는 개발자 팀을 구성하는 중입니다 (저는 개발자 본인입니다). 전문 프로그래머 / 디자이너 등이 함께 작동하는 방법과 사용해야하는 표준 / 패러다임에 대한 조언을 원합니다.

또한 누구든지 주제에 관한 책이나 링크가 있으면 환영합니다!

나는 내가 찾고있는 것을 만족시키는 것으로 생각했다.

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

답변:


9

버전 관리 사용

SVN은 매우 일반적이지만 수은은 더 잘 생기고 강력하며 GUI 지원이 강력합니다.

테스트 주도 개발

글쎄, 당신이 단위 테스트를 수행한다면 이미 승리 한 편입니다. 도구의 경우 선택의 문제입니다. 테스트는 가능한 한 쉬워야하는데, 이것이 SimpleTest를 위해 PHPUnit을 버린 이유입니다.

디버깅 코드

단위 테스트를 사용하면 xdebug가 거의 필요하지 않습니다. 나는 일반적으로 프로파일 링에만 xdebug를 사용합니다. (KCachegrind btw를 확인하십시오)

UML 다이어그램 사용

코드 로직을 반영하는 모든 것의 가장 큰 문제는 동기화를 유지하는 것이 많은 수동 작업이라는 것입니다. 일부 작업을 자동화 할 수는 있지만 일반적으로 무언가를 얻기 전에 uml을 사용하고 싶기 때문에 그다지 유용하지 않습니다. 다른 문제는 다이어그램 도구가 펜과 종이 또는 화이트 보드보다 사용하기 훨씬 어렵다는 것입니다. 여러 개발자와 문제를 의사 소통해야하거나 추상화가 필요한 경우 uml을 사용하십시오. ( "dia"는 훌륭한 무료 도구입니다. 또한 마인드 매핑 도구는 브레인 스토밍에 매우 유용하며 일부는 실제로 펜과 종이와 경쟁 할 수 있습니다.)

유지 보수 가능하고 재사용 가능한 코드에 OOP 사용

음, oop은 어느 정도 작동합니다. :) 좋은 조언 하나 : 구성> 상속. 상속은 첫눈에 재사용 할 수있는 강력한 도구이지만 유지 관리 및 느슨한 결합으로 인해 어려움을 겪을 수 있습니다. 두 번째 좋은 조언 : 유지 관리> 재사용. 추상 시스템은 매우 강력하지만 유지 관리가 어려울 수 있습니다.

신속한 애플리케이션 개발을 위해 프레임 워크 (예 : PHP 용 Zend Framework) 사용

RAD는 앱을 조기에 출시하는 것이 좋습니다. 그러나 일부 구성 요소, 특히 ORM은 확장성에있어 발을 쏠 수 있습니다. 여기서 중요한 문제는 도메인 로직을 개체와 연계하여 연결하므로 순수한 확장 가능한 데이터베이스 최적화 솔루션이 필요한지 여부를 결정하기가 매우 어렵다는 것입니다. 이를 알고 개발자가 높은 수준의 추상화 계층없이 데이터베이스를 활용하도록 장려하십시오. 데이터베이스 추상화는 신화이고, orm은 거짓말입니다.

키스

신규 이민자들은 일반적으로 모든 모범 사례를 적용하고, 코딩 표준을 설정하고, 멋진 툴 체인을 사용하려고합니다. 일부 개발자에게는 문제가 있지만 너무 엄격한 경우 일부는 정신적 봉쇄에 빠질 것입니다. 단위 테스트와 scm은 실제로 필수이지만 단위 테스트를 처음 접하는 사람은 실제로 그것을 사랑하기 전에 그 가치를 알아야합니다. 과용하지 말고, 실습을 단계별로 적용하고 어떻게 작동하는지 확인하십시오. KISS는 또한 코드로 요약합니다. 때로는 어려운 문제를 해결하는 가장 좋은 방법은 잘못 해결하는 것입니다. 6 도의 분리 알고리즘 이 필요 하십니까? 무작위로 친구를 선택하십시오. 잘못된 논리로 주변에 완전한 응용 프로그램을 만들 수 있습니다. 고객이 결국에는 버리지 않기로 결정하면 모두가 많은 돈을 절약했습니다.

기민한

민첩한 방법론, 익스트림 프로그래밍, 스크럼 등에 대해 배우십시오. 많은 책이 있습니다. 어떤 책이라도 팀을 더 좋게 만들지 만 모든 팀원을 참여시키는 것이 가장 좋습니다.


1
환상적인 답변! 감사. +150 담당자! 질문 아래 페이지 상단의 기능에 따라 게시물에 다른 내용을 자유롭게 추가하십시오. 코드, 주석 및 문서화 소프트웨어 등의 @TODO와 같은 것
Damien Roche

2
  • 버전 관리 : Windows의 경우 TortoiseSVN이 내 경험에서 사용하기에 가장 우수하고 직관적이며 가장 쉽습니다.

  • 프레임 워크 : CodeIgniter . PHP를위한 최고의 웹 개발 플랫폼을 경험하십시오.

  • IDE : Netbeans는 Windows에서 사용한 PHP를위한 최고의 IDE입니다.

  • 단위 테스트 : 몇 가지 옵션이 있습니다 .Google 검색이 많이 나타납니다. CodeIgniter에는 자체 단위 테스터도 있습니다.

  • 디버거 : Xdebug.

  • 자바 스크립트 라이브러리 : Jquery

  • FTP 프로그램 : FileZilla

  • 데이터베이스 관리 : PhpMyAdmin

  • Wireframing : Balsimus Mockup 또는 화이트 보드를 사용하십시오.

  • 기타 : Windows에서 WAMP를 사용하면 아파치, mysql 및 PHP를 모두 하나의 패키지로 쉽게 설치, 시작, 중지 및 다시 시작할 수 있습니다.

또한 많은 다른 웹 사이트에서 작업 할 때 대부분의 웹 사이트에 가입, 로그인 / 로그 아웃, 사용자 검색을위한 관리자 섹션 등과 같은 공통 기능이 있으면 프레임 워크가 작은 프로젝트를 만드는 것이 좋습니다 선택하고 시작하는 모든 새 프로젝트의 기반으로 해당 프로젝트를 사용합니다. 일반적으로 나는이 프로젝트를 '골격'이라고 부릅니다. xyz.com에서 작업을 시작하려면 스켈레톤 디렉토리를 복사하여 이름을 'xyz.com'으로 바꾸고 일부 구성 파일을 채우면 일부 기능이 포함 된 xyz.com 사본이 생깁니다. 이미 일하고 있습니다.


1
이 게시물을 읽은 후 이미 Netbeans IDE를 사용해보기로 결정한 몇 가지 권장 항목을 사용하고 있습니다. 누구나 PHP / Codeigniter 개발에 사용할 가치가있는 플러그인을 추천 할 수 있습니까? 또한 Wampserver와 잘 작동합니까?
Gortron

1
@ Gortron 나는 codeigniter와 함께 netbeans를 사용합니다. codeigniter / netbeans를위한 자동 완성 도구가 있습니다 : rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHP는 실제로 유닉스 언어이며 Linux 가상 머신에서 개발하는 것이 좋습니다. 또한 Subversion을 피하십시오 .2010은 분산 된 것을 사용합니다 (git, hg, bzr). hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.이것은 솔직히 헛소리입니다. 심포니, 레일 또는 장고를 사용한 적이 있다면 몇 가지 중요한 문제가 있습니다. 모듈 식 디렉토리 구조, 명령 줄 인터페이스가 없습니다. 그런 다음 많은 코드를 사용하는 양식 및 모델과 같은 핵심 구성 요소가 있습니다. 소프트웨어 패턴을 아는 경우 codeigniter가 큰 시간을 소비한다는 것을 알 수 있습니다. 최소한 커뮤니티가 죽은 후 CI 포크로 올바르게 수행되는 Kohana를 사용하십시오.
Keyo

Windows를 사용하는 경우 phpMyAdmin 대신 SQLyog ( 커뮤니티 에디션이 있음 )를 권장 합니다. 나는 부끄러운 리눅스에서 SQLyog에 대한 적절한 대체물을 찾지 못했습니다 ...
Dean Harding

1
@keyo, 링크 주셔서 감사합니다. Netbeans에 자동 완성 도구를 추가하여 모델에 많은 기능을 가진 프로젝트에 매우 편리합니다. 나는 SVN에서 아직 바뀌지 않을 것이라고 생각한다. 나는 단지 1의 군대 일 뿐이다. 내 생각에 분산 시스템이 필요하지 않다.
Gortron

2

나는 주로 Click Upvote의 게시물에 동의하지만 비교적 큰 사이트에서 작업하는 경우 Doctrine ORM과 함께 Symfony 프레임 워크를 사용하는 것이 좋습니다.

내년에 프로젝트가 예정되어 있다면 Symfony2 및 Doctrine2에 시간을 투자하십시오.

또한 유닉스 기반 시스템에서 개발하는 것의 중요성을 충분히 강조 할 수는 없습니다. 우분투는 저의 선호이며 훌륭한 웹 서버입니다. 주로 Windows에서 작업하지만 데스크톱 (또는 직장에있을 때 서버)의 VMWare 가상 머신에서 실행중인 Ubuntu에서 개발합니다.

IDE에 관해서는 슬프게도 모든 위대한 것들과 마찬가지로 NuSphere PHPEd 또는 Storm PHP를 사용하는 것이 좋습니다.


ORM의 경우 +1 codeigniter에서 상용구 쿼리를 작성하는 데 많은 시간을 보냈습니다.
Keyo

Linux 기반 시스템에서는 PHP가 훨씬 더 좋습니다. 특히 C 기반 플러그인 (libmemcached 또는 ImageMagick이 떠오를 것)을 사용하려는 경우
Dean Harding

리눅스에는 어떤 멋진 것들이 있습니까?
dan_waterworth

0

UML 다이어그램을 사용하는 것은 좋지만 전적으로 선택 사항입니다. 팀이 의미하는 바를 이해하는 한 모든 다이어그램이 작동합니다. 아무도 모르게 표준을 사용하려고하면 문제가 발생하고 시간이 낭비 될 수 있습니다.

각 페이지를 모형 ( http://balsamiq.com ) 에서 시작 하거나 디자이너가 페이지를 그리도록 권장 합니다. 개발자가 시각적 미학을 능숙하게 사용하고 어디에서나 좋은 페이지를 만들 것으로 기대하지 마십시오.

사람이 여러 seniour 팀 구성원이있는 경우, 코드 검토 의무에 할당 한 - 수 있도록 그들을 어떻게 회전 리뷰 ( 검토위원회 )


0

공동 작업을 처리 할 때는 다음이 필요합니다.

• 버전 제어 사용 : Git 또는 Subversion이 매우 원활하게 작동 할 것이라고 생각합니다.

• 테스트 주도 개발 : 필자는 이것이 필수라는 것을 배우기 시작했지만 극단적으로 받아들이지 마십시오.

• 디버깅 코드 (PHP 용 xdebug) : xdebug가 내 선택입니다

• UML 다이어그램 사용 : 모든 사람이 OO 프로그래밍 및 디자인 패턴에 대한 실무 지식을 가지고있을 때 도움이되지만 항상 모범 사례입니다.

• 유지 관리 가능하고 재사용 가능한 코드에 OOP 사용 : 그리고 FLEXIBILITY, 이것이 OOP의 핵심 측면이라고 생각합니다.

• 신속한 응용 프로그램 개발을 위해 프레임 워크 (예 : PHP 용 Zend 프레임 워크) 사용 : My Advise는 툴킷이 아닌 첫 번째 PHP 프레임 워크 인 SYMFONY입니다. 그것은 매우 큰 공동체와 많은 문서를 가지고 있으며 PHP로 완전히 구현되었습니다. 나는 1 년 동안 그것을 사용해 왔으며 OOP와 완전히 결합합니다.

Mantis 또는 Track 과 같은 버그, 기능 요청 등을 추적하는 시스템이 필요할 수도 있습니다 . 이 sistems는 매우 쉽고 간단합니다. 또한 서브 버전과 커밋을 사람들이 게시 한 특정 기능이나 버그와 연관시킬 수도 있습니다.

마지막으로, 개발자 팀이 정기적으로 소규모 회의를 할 수 있도록 일정 시점에서 모든 사람이 시스템의 상태를 알 수 있도록하는 것이 중요하며 어쩌면 상황을 계획하거나 수행 할 수있는 방법을 알 수도 있습니다.

우리 회사에서는 매일 작업중인 내용과 합병증이 있는지 알려주는 이메일을 보내야합니다.

행운을 빌어 요!


0
  • 프레임 워크 : 의심 할 여지없이 codeigniter. 그것은 당신이 지금해야 할 수도 있습니다 모든 기능을 가지고 있으며, 당신이하지 않으면 당신이 그들 중 하나를 사용하도록 강제하지 않습니다 필요성을;
  • 버전 관리, IDE : 저는 꽤 오래된 학교이며 제 대답이 실제로 당신을 도울 수 있다고 생각하지 않습니다.
  • Wireframing, UML : 이것도 오래된 학교이지만 실제로 : 화이트 보드가 이깁니다. 유연하고 확장 가능하며 적합하다고 생각되는 모든 규칙을 지원합니다.
  • 데이터베이스 관리 : phpmyadmin;
  • 개발 서버 OS : 평범하지는 않지만 우분투. LAMP 서버를 몇 초 안에 설치하십시오. 새로운 라이브러리 추가에 대해 당황하지 마십시오 (무서운 imagick : 하나의 명령이 완료되었습니다). PHP를 좋아한다면 프로덕션 환경에서 Linux 서버에서 작업하게 될 것이므로 연습을 시작하는 것이 좋습니다. (면책 조항 : 우분투는 내가 좋아하는 배포판이 아닙니다).
  • 기타 : grep은 다른 사람들의 코드를 디버깅 할 때 매우 유용 할 수 있습니다 (지정된 모델을 사용하는 컨트롤러 수를 알고 있습니까?).

편집하다

나는 가장 중요한 것을 잊었다 : 사양. 코드를 만지기 전에 프로젝트에 대한 실제 사양을 작성 하십시오. 모든 사용자 상호 작용 다이어그램을 염두에 두십시오. 그것은 몇 세기를 절약 할 것입니다.


0

버전 관리 팀에서 일하고 있기 때문에 배포 된 것을 사용하는 것이 가장 좋습니다. 후보자는 Git과 Mercurial입니다. 즉, 팀은 프로젝트를 중단하지 않고 로컬로 커밋 할 수 있지만 작업을 추적 한 다음 이러한 커밋을 중앙 서버로 푸시 할 수 있습니다. 코드가 개정이 아닌 변경 세트로 추적되므로 훨씬 빠르며 병합 충돌이 적습니다. hginit 안내서 (스택 오버플로 공동 창립자가 작성)를 읽으면 DVCS가 무엇인지 조금 더 이해할 수 있습니다. http://hginit.com/

rsync 또는 ftp 대신 배포를 위해 리포지토리를 사용해야합니다.

테스트 주도 개발 테스트 중인 작업에 따라 많은 시간이 소요될 수 있습니다. 작은 프로젝트의 경우 오버 헤드이므로 완전히 건너 뛰라고 말하지 않습니다. 라이브러리 또는 대규모 장기 프로젝트를 작성하는 경우 반드시 테스트를 작성하십시오. 테스트는 유지 보수 단계에서 도움이됩니다. TDD가 모든 버그를 찾을 수는 없습니다. 사용자 경험 문제, 레이아웃 문제, 성능 문제 등이 있습니다.

Xdebug 디버깅 은 기본적으로 유일한 선택입니다. Netbeans과 잘 통합됩니다. 변수를 인쇄해야 할 필요가 있다고 생각되면 로그 파일을 사용해야합니다. 프레임 워크 로그 기능을 사용하면 프로덕션 환경에서 훨씬 안전합니다.

계획 / 다이어그램 만약 좋은 프레임 워크를 사용한다면 상세한 다이어그램을 너무 많이 만들 필요는 없습니다. 간단하게 유지하고 더 짧은 릴리스 주기로 작업 할 수 있으므로 과도하게 계획하기 쉽습니다. 프로젝트의 요구 사항과 사양은 변경 될 수밖에 없기 때문에 모든 시간을 투자하지는 않을 것입니다. 코드는 가장 세부적인 수준의 사양임을 기억하십시오.

버그 추적 도구 (아래 참조)를 사용하여 사양을 팀 구성원에게 할당 할 수있는 작업으로 나눕니다. 중앙 도구를 사용하여 프로젝트를 문서화하면 버그 추적기에 위키가있을 수 있습니다.

Mysql Workbench와 같은 도구를 사용하여 다이어그램에서 데이터베이스 스키마를 디자인하고이를 SQL로 내보낼 수 있습니다.

프레임 워크와 OOP 아마도 가장 중요한 부분 일 것입니다. 빠른 개발 및 코드 재사용을 지원하는 대중적인 프레임 워크를 찾으십시오. 어떤 사람들은 이런 말을 좋아하지 않지만, 틀이 당신의 작업 방식을 지시해야합니다. 한 개발자가 프로젝트를 전환하고 특정 페이지의 컨트롤러가 어디에 있는지, 템플릿 변수가 무엇인지, 모델을 쿼리하는 방법을 정확히 알 수 있도록 구조를 제공해야합니다. 일부 프레임 워크는 여기서 너무 많은 유연성을 허용하므로 개발자가 항상 같은 방식으로 프레임 워크를 사용하지는 않습니다. 나는 파이썬 철학을 좋아한다. 모든 것을 할 수있는 확실한 방법이 있어야합니다. 이것이 내가 장고와 레일을 좋아하는 이유이며, 그들은 매우 의견이 많으며 다른 사람의 코드를보고 그것이 무엇을하는지 이해할 수 있음을 의미합니다. Symfony는 여기서 가장 좋은 옵션처럼 보입니다.

다음과 같이 스택 오버플로에 대한 많은 '어떤 프레임 워크'질문이 있습니다 : https : //.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

버그 추적 귀하의 팀에게 개발자를위한 좋은 버그 추적기를 만드십시오. 베이스 캠프처럼 단순화 된 것을 사용하지 마십시오. Redmine과 Unfuddle은 훌륭한 버그 추적기의 두 가지 예이며 시간을 추적하고 리포지토리와 통합 할 수도 있습니다. 팀은이 도구를 사용하여 전자 메일 또는 IM이 아닌 문제를 전달해야합니다. 기존 버그 및 문서 기록이있을 때 새로운 개발자가 더 쉽게 만들 수 있습니다. 이 기사에서는 좋은 버그 추적기의 역할과 그 이유를 정확하게 설명합니다. http://www.joelonsoftware.com/articles/fog0000000029.html


0

버전 관리는 Bazaar를 참조하십시오. Git에 비해 Windows, Mac OS 및 Linux에서 실제로 사용하고 설치하기가 쉽다는 주요 이점이 있습니다. 또한 bzr 명령은 svn 명령과 매우 유사하므로 이전 버전의 Subversion을 사용해 본 사람은 많은 학습 곡선없이 Bazaar를 쉽게 사용할 수 있습니다. 당신을보고 있어요

그 외에도 나는 개발자에게 아무것도 강요하지 않는다는 강한 신자입니다. 그 말에 따르면 IDE, 운영 체제 등을 선호한다고합니다.

그 외에도 아무리 지루한 지에 관계없이 모든 코드에 대해 철저한 테스트를 수행하는 것이 좋습니다.

프레임 워크 imho에 대한 결정 또는 반대는 여기에서 작성된 권장 사항을 기반으로 할 수있는 것이 아닙니다. 나는 당신의 기능에 따라 당신에게 유망한 것으로 보이는 것들을 열거하고 그들 각각에 작은 테스트 응용 프로그램을 작성하는 것이 좋습니다. (매번 같은 것을 쓰십시오.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.