2011-12-20 2 views
-1

특정 조건에 따라 bin 패킹을 수행하는 알고리즘이 있습니다. 알고리즘의 흐름은 독자가 이해하기에 조금 복잡하다는 것을 알게되었습니다.Java에서 조건부 Bin 패킹을위한 단순화 된 프로세스

아래에서 개발 된 Java 코드를 찾을 수 있습니다. 이 코드에 대해 훨씬 단순화 된 대체 흐름이 있습니까?

void binpack() { 
boolean set=false, cmap=false; 
     while(set==false) { 
      set=true; 
      cmap=false; 
      pack[k.cnt]=new bins(k.lim, k.ptim); 
      for(int i=0;i<tot;i++) {   
       int s1,s2; 
       if(jm[i][1]==0) { 
        s1=jm[i][0]; 
        set=false; 

        else if(pack[k.cnt].pushk<k.lim) { 
         for(int j=0;j<pack[k.cnt].pushk;j++) { 
          s2=pack[k.cnt].binjm[j][0]; 
          for (Iterator<Integer> g= list[s1].iterator(); g.hasNext();) { 

    } 
} 

주 :

ptim -> 현재

ETIM -> 종료 시간

액세스 제한 -> 제한

+0

'k'와'j' 값은 어디서 들어 옵니까? 클래스 변수 인 경우 .................. – corsiKa

+0

@glowcoder : 질문 편집 ... – thinkcool

+2

이것이 다소 주관적인 문제임을 알고 있습니다.하지만 줄 끝 부분에 여는 중괄호를 넣어야합니다. 그 (것)들을 그들의 자신의 선에두기 대신에. 내가 그것을 볼 때 나는 {{{{{{{{{{. 그 메모에서 몇 가지 방법을 추출해야합니다. –

답변

1

의 맨 위에 떨어져 몇 가지 내 머리 :

  1. 가변 이름 더 표현력이 있어야한다. 줄여 쓰지 마십시오. 특히 한두 개의 문자를 저장하지 마십시오 (예 : ptim, chk())
  2. 괄호를 닫기 전에, 괄호를 닫기 전에, 연산자 이전과 이후에 공백을 넣으십시오. 어리석게 들리지만 코드가 얼마나 쉽게 읽힐 지 놀라게 될 것입니다.
  3. 피 불필요한 부울 비교 (예 : if (bool == false)if (!bool)
  4. 적절한 {} 블록을 사용, 한 줄을 if의 또는 while의 피해야한다. 당신이없는 경우
  5. 변수를-선언 사전하지 마십시오.
  6. 레이블에 대신 당신이 당신의 중첩 루프가 더블 브레이크 구조의
  7. , break
  8. 그리고 무엇보다도 :.. 요소 그 루프의 일부 밖으로 방법에
+0

제안 해 주셔서 감사합니다. 그걸 시도해보십시오. – thinkcool

1

첫째로, 일부 입력을 저장하기 위해 변수를 생략하지 마십시오. 이로 인해 해당 코드와 같은 비표준 코드가 난독 화됩니다.

둘째, 이미 java.util.Map에 대해 들어 보셨습니까?

+0

java.util.Map을 사용하지 않았습니다. – thinkcool

관련 문제