티스토리 뷰

반응형

엄밀히 이야기 하면 PHP 만 싫어하는게 아니고 동적 언어를 원래 싫어하는데...특히 PHP 는 개인이 홈페이지 만들려고 설계를 체계적으로 하지 않고 즉흥적으로 막 만든다는 느낌이 너무 강해서 싫어합니다.


아래 내용은 저번주에 저희 회사에서 저희 파트원 3명이 한 이야기인데...이런 언어로 억 단위 사용자가 이용하는 사이트를 개발한다는게, 어쩔 때에는 좀 짜증날 때가 있습니다.


PHP 에서 DB 질의 결과($row)을 담은 변수를 return 한 뒤 이를 if 에서 empty() 로 결과가 있는지 비교하는데, 기존에는 항상 결과가 1개 이상 있는 것이었는데 이번 패치로 결과가 한 건도 없는 경우가 발생합니다. 결과가 없을 때 true 인가요, false 인가요?


정답은 PHP 공식 문서에 있습니다.


http://php.net/manual/en/function.empty.php


The following values are considered to be empty:

  • "" (an empty string)
  • 0 (0 as an integer)
  • 0.0 (0 as a float)
  • "0" (0 as a string)
  • NULL
  • FALSE
  • array() (an empty array)


저런 것들을 다 외우고 있다면 크게 문제가 되지 않을 수 있지만, "0.0" 은? 와 같은 의문을 품거나 array() 함수로 빈 객체를 생성했다고 생각할 게 뻔한 다른 언어를 많이 하던 개발자들은 저런 판단기준을 이해할 수 있을까요?


사실 PHP 에는 함수마다 저런게 너무 많습니다. Java 에도 악습이라 불리우는 몇 가지가 있습니다만, 사실 PHP 에 비하면 조족지혈이라고 불러도 괜찮을 정도입니다. 물론 이 외에도 제가 싫어하는 악습은 수도 없이 많습니다만 말이죠.


현재 운영 업무를 예전에 비해 더 많이 하고 있는데, 저런 언어적 난제와 에러 로깅의 난잡함(지금 쓰는 CI 의 로깅레벨이 0 : None, 1 : Error, 2 : Debug, 3 : Info 순입니다. 3 을 선택하면 CI 의 Debug 메세지를 모두 봐야 하는 황당함이...), 불완전한 Exception 와 주요 라이브러리에서조차 막 써대는 return false, 이를 따라한 내부 코드에서의 return false(에러 원인을 호출자에게 알려주지 않는다는 겁니다), 스크립트 언어가 가지는 한계 등 정말 할 말이 많습니다만, 다 늘어놓기도 민망할 정도입니다. 결국 창시자인 라스무스의 말처럼 단순 문제 해결을 위해 적합한 언어이지 협업을 하거나 재사용을 목적으로 한다는 식의 외형적 확장은 기대하지 말아야 할 수준입니다.

정말 초기에 Mock 이나 투자자에게 보여주기 위한 것을 만들 때에는 이런 언어들 쓰는 것도 말리지 않겠습니다만...어느 정도 규모를 생각한다면 제발 여러가지 고려해가면서 개발하시길 권합니다.


얼마 전에 okky 의 어떤 글에서 구조만 주구장창 잡는 개발자와 생각나면 바로 개발하는 개발자에 대한 내용을 언급하고 후자만이 개발자라고 하던데, 초반에 언어나 구조 이상하게 잡으면 두고두고 후회합니다. 맨날 레거시가 개판이다라고 읊어대는 동료들과 함께 자신도 한숨 푹푹 쉬면서 일해야 한다는 의미입니다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함