2016-11-03 1 views
0

나는 여러 가지 if-else 절을 ​​피하기 위해 스위치 케이스 구성으로 서비스 코드를 최적화하여 코드를 읽기 쉽게 만듭니다.swich-case 구속을 사용하여 서비스에서 의도 사용을 최적화하는 방법

그래서, 우리는 {// 일부 로그인} (나는 "스위치를 (평균) 조건을 필요 스위치 케이스를 사용합니다. 내가 의도 개체를 사용해야하는 조건

를이 코드를 단순화하기 위해?

@Override 
     public int onStartCommand(Intent intent, int flags, int startId) { 
      if (intent == null) { 
       return super.onStartCommand(intent, flags, startId); 
      } 
      if (intent.hasExtra(ChatManager.WS_CONNECT)) { 
       ChatManager.getInstance().start(chatCallbackConnect, false); 
      } else if (intent.hasExtra(ChatManager.CHAT_CONNECT)) { 
       try { 
        String roomId = intent.getStringExtra(ChatManager.INTENT_EXTRA_ROOM_ID); 
        String roomIdRoomId = intent.getStringExtra(ChatManager.INTENT_EXTRA_ROOM_ID_ROOM_ID); 
        ChatManager.getInstance().getMessage(roomId, roomIdRoomId, chatCallbackMessage); 
       } catch (Exception e) { 
        log("ChatService. Exception: " + e); 
       } 
      } else if (intent.hasExtra(ChatManager.MSG_SEND)) { 
       String message = intent.getStringExtra(ChatManager.MSG_SEND); 
       ChatManager.getInstance().sendMessage("topic/" + ChatManager.getInstance().getTopicId(), message); 
      } else if (intent.hasExtra(ChatManager.ADD_USER)) { 
       String user = intent.getStringExtra(ChatManager.ADD_USER); 
       ChatManager.getInstance().addUser(user, chatCallbackAddUser); 
      } else if (intent.hasExtra(ChatManager.CREATE_GROUP)) { 
       String group = intent.getStringExtra(ChatManager.CREATE_GROUP); 
       ChatManager.getInstance().createGroup(group, chatCallbackCreateGroup); 
      } else if (intent.hasExtra(ChatManager.CHAT_DISCONNECT)) { 
       ChatManager.getInstance().disconnect(); 
       stopSelf(); 
      } 
.는 등 Chat.xy이있는 경우는 정수 값을 반환하는 함수를 사용할 수있는 경우
+0

은 (가독성은 참으로 고귀한 추구 (코드를 언급하는 것이 도움이 -.?'onStartCommand()'에 대한 (상속)는 다큐 멘 테이션 코멘트로 시작) 나는'switch'을 사용하는 방법을 볼 수 없습니다.). – greybeard

답변

0

이 Chat.Ws이있는 경우는 1을 반환하기 추천하고이 이제 아래로 스위치를 넣을 수 있습니다

그럼. : - 스위치 (값) { 사례 1 : //이 작업을 수행하십시오 휴식; // ........... 기본값 : // do do

하지만 값을 얻기 위해 다시 사용해야합니다.

+0

메소드 이름은 "getExtras()"이며 Bundle을 반환하므로 비교하는 데 도움이되지 않습니다. –

0

인 텐트 다형성 만들기 케이스별로 하나의 하위 클래스 만들기. 그런 다음 각 인 텐트 서브 클래스는 필요한 것을 그냥 할 수있다.

@Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     if (intent == null) { 
      return super.onStartCommand(null, flags, startId); 
     } 
     intent.doWhatIsNecessary(...);