ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 쉬운 PHP 코드와 좋은 PHP 코드
    PHP 2020. 7. 10. 09:08
    반응형

    쉬운 PHP 코드

    PHP 코드를 작성하는 것은 매우 쉽다. 예를 들면 users 테이블에서 사용자들의 정보를 불러와서 출력하는 기능을 만든다고 가정하자. 단 2줄로 데이터베이스에서 사용자 정보를 불러올 수 있고 바로 그 자리에서 출력해버릴 수 있다.

    이런 쉬운 PHP 코드는 누구나 처음 배울 때 접하는 PHP의 얼굴이자 아픈구석이라고 생각한다. 쉽게 쓰여진 PHP 코드가 처음 배우는 사람들에게는 진입장벽을 낮추는 역할을 한다. 예제를 조금만 따라하다보면 바로 게시판을 만들고 사용할 수 있는 레벨에 쉽게 도달하게 된다. 전문적인 프로그래머가 아니어도 무엇인가 내가 원하는 기능을 만들수 있다는 성취감을 얻게 도와준다. 대체로 여기서 만족을 느끼고 발전하지 않는 PHP 사용자가 적지 않다.

    MVC 패턴

    한 단계 나아가면 쉬운 PHP 코드 처럼 모든 레이어가 혼재 되어 있는 패턴은 나쁘다는 이야기를 자주 듣게 된다. PHP코드와 HTML코드의 구분이 없는 패턴을 허용하는 PHP를 많은 이들이 공격을 하곤 한다. PHP의 태생적 가치 마저 비하하는 공격을 듣고 나면 내가 선택한 길이 잘못된 것인가 의심하고 이내 슬퍼지게 된다. 그래서 울면서 이것 저것 찾아보며 배우게 되는게 있는데 바로 MVC 패턴이다. 그나마 PHP 코드와 HTML 코드가 분리되어 보이고 각자 역할에 충실한 클래스를 사용하면서 재사용성과 협업이 가능한 구조에 눈을 뜨기 시작한다. 위의 예제 코드를 나름 PDO 추상화 레이어와 클래스를 활용한 MVC 패턴으로 분리한다고 가정하자.

    흔히 말하는 MVC 패턴을 사용해서 아까 전 코드보다는 조금 더 나은 모습이다. 하지만 여전히 각자 클래스는 다른 클래스와 강한 결합을 갖고 있다. 데이터베이스 연결 없이는 할수 있는게 없고, 통합 테스트는 가능해 보이지만, 단위 테스트를 위해서는 반드시 서로 다른 클래스들이 종속적으로 작용을 해야만 하는 패턴이다. 패턴이 없는 코드에서 MVC 패턴 단계의 코드로 발전을 하면 무언가 대단해진 것 처럼 보이지만 결국 이 또한 좋은 PHP 코드가 되기 위해서는 조금 부족하다.

    좋은 PHP 코드

    또 한 걸음 더 나아가서 느슨한 결합의 레이어들을 활용해 단위 테스트가 가능한 좋은 PHP 코드를 작성해보자.

    완벽히 좋은 PHP 코드라고 할 순 없지만 단위 테스트가 가능한 더 괜찮은 코드가 되었다. 느슨한 결합의 레이어들이지만 약속된 구현체가 반드시 있어야한다. 컨트롤러에게는 데이터베이스의 결과가 아니라도 getAll() 메소드 구현체가 전달 된다면 작동하게 되어 있다. 임의로 컨트롤러에게 페이크 데이터를 실은 구현체를 전달해서 테스트 할 수 있는 구조가 마련된 샘이다.

    좋은 PHP 코드를 작성하는 것은 무척 어렵다. 좋은 PHP 코드란 단위 테스트 작성이 가능하고, 리팩토링이 쉽고, 재사용성이 좋고, 의존성 업그레이드가 무섭지 않아야 한다. 흔히 말하는 디자인 패턴 철학을 가진 레이어를 말한다. 위에 적은 4가지가 가능한 PHP 코드란 느슨한 결합의 레이어를 구현한 코드다. 느슨한 결합의 레이어들은 다른 레이어에 영향을 주지 않아 리팩토링이 간결해진다. 리팩토링이 간결하다면 의존성을 가진 패키지들의 업그레이드도 쉽게 도전할 수 있고 이는 지속가능한 어플리케이션의 토대가 된다. 좋은 PHP 코드를 사용하는 PHP는 생각보다 단단하며 멋진 언어이다.

    쉬운 PHP 코드와 좋은 PHP 코드

    나는 PHP 코드를 작성해서 대가를 지불 받는 10년 차 PHP 프로그래머다. 10년 전으로 돌아간다해도 나는 주저 없이 PHP를 선택 할 것이다. 내가 만약 JAVA를 했었다면 지금의 연봉에 이르지 못했을 거라고 단언한다. 재미가 무척 없었기 때문이다. 쉬운 PHP 코드는 너무나 쉽고 매력적인 도구이다. 쉽게 접근할 수 있다고 해서 무시 당하고 괄시 받아야 할 이유가 되지 않는다고 생각한다. 코드의 작성의 대가가 다른 언어보다 떨어질 이유도 되지 않는다고 본다. PHP는 좋은 PHP 코드도 작성할 수 있으니깐 말이다.

    쉬운 PHP 코드라고 나쁘다고 공격하면 안된다고 생각한다. 쉬운 PHP 코드만 작성해 본 사람들이 결국 안티가 되어 PHP가 나쁘다고 공격을 하게 되더라. 쉬운 PHP 코드는 좋은 PHP 코드로 발전할 수 있다. 즉 좋은 PHP 코드의 반대는 나쁜 PHP 코드가 아니라 쉬운 PHP 코드이다. 쉬운 PHP 코드와 좋은 PHP 코드 둘 다 PHP이고 경우에 따라서 둘 다 사용될 수 있다. 이것은 다른언어가 갖지 못한 PHP의 특이점이자 장점이라고 생각한다.

     

    반응형

    'PHP' 카테고리의 다른 글

    Slim Framework - a micro framework for PHP  (0) 2019.05.12

    TAG

    댓글 0

© GS.HN Interactive.