Total: Today: Yesterday:
개발/JavaScript | 2015. 2. 6. 20:53 | Posted by 짜장이누나


저도 허접한거 하나 올려보겠습니다...

다들 충분히 하실거라 생각되지만!! 그래도 혜원님의 첫 포스팅 시작합니다.\

고고



if/swith 문을 map 으로 리팩토링 하는 방법


간단한 ~~한 처리를 위해서 if문이나 switch문은 쉽고 간편하기 떄문에 많이 사용한다.

하지만 처리해야할 ~~가 많아진다면 if-else가 많아지고, case문이 많아져 코드의 가독성이 떨어질 것이다.


먼저 switch문으로 작성한 코드를 보자.

### js

function getStringMemberStatus(eventList) {

for(var i=0; i<eventList.length; i++) {


var _eachEvent = eventList[i];


logger.log( "☆☆☆" + jsonUtils.toJSONString(_eachEvent));

var _memberCode = _eachEvent.member_status;


 

switch(_memberCode) {

  

case '500':

_eachEvent.xMember_status = '멤버';

break;

case '200':

_eachEvent.xMember_status = '초대';

break;

case '700':

_eachEvent.xMember_status = '운영자';

break;

default :

_eachEvent.xMember_status = '탈퇴';

break;

}



_eachEvent.xMember_status = memberCodeMap[_memberCode] || memberCodeDefaultValue;


var _memberName = _eachEvent.member_name;

   

logger.log( "***memberCode= " + _memberCode);

logger.log( "***memberName= " + _eachEvent.xMember_status);

   }

}

위 소스는 멤버 코드를 받아와 각 코드에 해당하는 String을 반환하는 함수이다.

여기서 멤버 코드가 추가 될 경우 case문을 계속해서 추가해야한다.

계속 코드가 길어지고.... case문이 많아지니까 맘에 들지 않아!


그러면 map으로 바꿔보면 어떨까?

### js

function getStringMemberStatus(eventList) {


       for(var i=0; i<eventList.length; i++) {

            

             var _eachEvent = eventList[i];

      

            logger.log( "☆☆☆" + jsonUtils.toJSONString(_eachEvent));

             var _memberCode = _eachEvent.member_status;

            

             var memberCodeMap = {

                         '100': '가입' ,

                         '150': '가입' ,

                         '200': '초대' ,

                         '250': '초대' ,

                         '300': '탈퇴' ,

                         '350': '탈퇴' ,

                         '500': '멤버' ,

                         '700': '운영자'

            };

             var memberCodeDefaultValue = '되바라지다.' ;


            _eachEvent.xMember_status = memberCodeMap[_memberCode] || memberCodeDefaultValue;


             var _memberName = _eachEvent.member_name;

      

            logger.log( "***memberCode= " + _memberCode);

            logger.log( "***memberName= " + _eachEvent.xMember_status);

      }

}

코드가 훨신 더 간결해지고 읽기 편해짐이 느껴지는가??

여기서 멤버 코드가 추가되더라고 '키(key)-값(value)' 만 추가해주면 된다.

아주 간단하죠???????????





그럼 혜원님은 이만 뿅!

고고