티스토리 뷰

반응형

PHP 코드개선 2

목표

기존 json 스크립트를 요청사항에 맞게 가공하는 일이였지만 우리는 토이 프로젝트 가 아닌 실제 서비스에 적용될 업무였기 때문에

단순하게 설계하는 방법보다는 효율적으로 개발해야만 했다.

요청사항
문자열 내부의 5~7개의 공백("\r\n") 기준으로 배열을 쪼개여 json 으로 반환할 것

가공 전

{
  "category": "날씨",
  "content": "오늘 강원도 날씨는 ...       오늘 새벽 동해안에 강한 비바람 ...       미세먼지 주의 ..."
}

가공 후

{
  "category": "날씨",
  "content": "오늘 강원도 날씨는 ...",

  "category": "날씨",
  "content":"오늘 새벽 동해안에 강한 비바람 ...",

  "category": "날씨",
  "content": "미세먼지 주의 ..."
}

내 방식

문제점

위 코드의 문제점을 확인하면

  1. while
  2. 시간 복잡도를 고려하지 않았다는 점

초기 작업을 설계할 때에는 2가지로 프로세스로 구분하여 완성된 array를 다시 분해하는 과정을 선택했다.

때문에 시간 복잡도는 2*O(n) 과정을 이루기 때문에 좋은 코드는 못된 것이다.

while 사용이 왜 문제일까?

forwhile 의 작업 속도 차이의 문제가 아닌다.

많은 처리해야하는 데이터 즉, INPUT 데이터에 문제가 생길경우 while 문이 끝없이 반복된다면 어떨까?

기업이 사용하는 메인 서버에 과부하가 발생하여 서비스가 종료된다면 기업적 손해가 발생할 것이다.

기업적 손실을 생각한다면 완성도 높은 코드라도 while문 사용은 많은 고민을 해야할 것이다.

개선

작업을 한큐에 끝낼것 / while 문을 사용하지 말것

insert_array function을 제거하고 $articles을 생성하기 직전 데이터를 변환하는 작업을 추가하여
시간복잡도를 해결하고 조금도 직관적인 코드를 구성했다.

결론

별거아닌 문제도 초기 프로세스 설계에 접근방법이 잘못된다면
결과 코드는 크게 달라질 것이며 생산성 문제로 이어지게된다.

당시 while 문을 사용한 나는 30분동한 회사 서버를 마비시켰다.

while 문이 쏘아올린 기업 손실 인 것이다.


개발자로 일을 시작하는 사람들이 쉽게 빠지는 습관이 있다면

자신의 코드는 완벽하다.는 오만과

지금 당장 작동하는 코드면 만족하는 나태함 일것이다.

언제까지나 나는 주니어 개발자니까라는 안일한 마음으로 회사를 다닐 수는 없는 법이다.

그러니 어떤 일이 주어진다면
잠시 키보드에서 손을때고 프로세스를 손으로 그리며 접근 방법을 설계하는 습관을 가지는 것이

코드 한줄보다 더 값진 경험을 가져가는 지름길이 아닐까?

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/10   »
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
글 보관함