자바 기술 개발의 그 알 수없는 규칙에 드웰

자바 기술 개발의 그 알 수없는 규칙에 드웰

미래는 다른 규칙을 작성하는 것입니다 더 많은 개발 수준은 일반적으로 중간에 소개이 문서는 자바 규칙은 세 가지 주요 단계로 나누어 설명합니다. 이러한 규칙 준수 프로그램의 효율성을 향상 등의 코드를 읽기 및 만들 수 있습니다.

첫째, 마지막으로 자원 입력 또는 출력 방법을 해제

입출력 스트림의 메소드를 정의 바디는 필요 최종적으로 어느을 해제한다. 전화 이러한 유형의 colse () 메소드가 작동하지 않기 때문에, 규칙을 준수 할 필요가 없습니다 :

java.io.StringWriter 
java.io.ByteArrayOutputStream 
java.io.ByteArrayInputStream

방법은 다음 시간을 반환하면 시스템 리소스의 누수가 발생합니다 그렇게 할) 자원을 입력 ()과 출력 (해제 close () 메소드를 호출하지. 그리고 어떤 경우에 비정상의 시간을 포함, 전체 close () 메소드로 돌아갑니다 호출에서 결정되어야한다. 그래서 필요는 마지막 방법 내에서이 방법을 추가 할 수 있습니다. 이 자원이 어떤 상황에서도 종료됩니다 것을 보장한다.

오류의 예 :

public class CIO 
{
    public void method (java.io.File f)
    {
        java.io.FileInputStream fis = null;
        try 
        {
            fis = new java.io.FileInputStream (f);
            fis.read ();
            fis.close ();
        }
        catch (java.io.FileNotFoundException e1)
        {
            System.out.println("File not found");
        }
        catch (java.io.IOException e2) 
        {
            System.out.println("I/O Exception");
        }
        // 如果出现异常,这里就不能保证关闭资源。
    }
}

수정 된 코드 :

public class CIOFixed
{
    public void method (java.io.File f)
    {
        java.io.FileInputStream fis = null;
        try {
            fis = new java.io.FileInputStream
            (f);
            fis.read ();
        }
        catch (java.io.FileNotFoundException e1)
        {
            System.out.println("File not found");
        }
        catch (java.io.IOException e2) 
        {
            System.out.println("I/O Exception");
        }
        finally
        {
            if (fis != null)
            {
                try 
                {
                    fis.close ();
                }
                catch (java.io.IOException e) 
                {
                    System.out.println("I/O Exception");
                }
            }
        }
    }
}

둘째, 다른주의 집중 문제

항상 if 문은 일반적으로 하나의 경우, 다음에 일어날 수 {있다} 생각했다. 같은, 중첩의 경우가 다른없는 경우에, {}이 필요하다

오류의 예 :

if (i < 5) 
if (i < 2)
i++; else
i--;

수정 :

if (i < 5) 
{
    if (i < 2)
    i++;
} else 
{
    i--;
}

또한 보유 어떤 코드 셋째, 잡을 수없는 () 블록

일부 오류 처리 코드를 넣어 캐치 () 블록에서하는 것이 좋습니다. 그러나 javadoc에 대한 코드 내부의 캐치 (), 또한 가능한 경우.

오류의 예 :

try {
    System.in.read ();
}
catch (java.io.IOException e) 
{
    // 错误
}

올바른 :

try {
    System.in.read ();
}
catch (java.io.IOException e) 
{
    System.out.println("Descriptive error");
}

넷째, 상태 값이 내부에 장착되어 있지 않으면

이렇게하면 시스템이 오류를보고합니다. 값으로 내부에 자바의 문을 부착 많은 조건에서 매우 현명하고, 시스템이 오류를보고합니다. 예외가 발생하기 쉽습니다. 간단한 유지 보수를 가능하게이 규칙을 준수하고 불일치를 피할 수 있습니다.

오류의 예 :

if (b = true)

오른쪽 :

if (b == true)

문 다섯은 루프에 필요합니다.

당신이하지 {} 다음, 문에 한 번만 할 경우! 오류의 예 :

for (i = 0; i < 10; i++);
System.out.println (i);

한 번만 여기에 인쇄 (). 올바른 :

for (i = 0; i < 10; i++) 
{
    // FIXED
    System.out.println (i);
}

여섯째,) (주 같은 방법을 정의하지

이 자바에서 main () 메소드는 특별한 방법이다. 그래서 셔플을 방지하기 위해, 방법 자체의 정의에 때 같은 이름을 정의하지 않습니다.

세븐, '오류'와 '의 Throwable'서브 클래스의 직접적 또는 간접적으로 정의 할

java.lang.Error단지 당신이 직접 또는 직접적으로 상속 클래스 '오류'클래스를 정의하는 경우,이 메소드를 오버라이드 (override) JVM의 이상이 나타날 경우,이 오류는 대신이 클래스의 내부 JVM입니다 지적했다. 오류 예외 처리를 확인하지 수 있도록 그래서 자바 컴파일러는, 표시되지 않습니다.

java.lang.Throwable'是'java.lang.Exception그리고 java.lang.Error뛰어난 클래스 등의 사용자 정의 예외로 그런 종류의 상속하는 경우는 java.lang.Exception.

오류의 예 :

public class ABC extends Error

올바른 :

public class ABC extends Exception

여덟의 문제 "의 경우"내부의 "스위치"문에 대한

각 "의 경우"의 가장 아래에 가지 않기로 제어하는 ​​"수익"또는 "휴식"에 정의되어 있습니다

"케이스"로 이동합니다. 는 "휴식"또는 "반환"문장없이 마지막에 "경우"문이 프로그램은 "사건"의 코드로 이동됩니다. 이 "사건"지난 한 경우, 그것은 "경우"뒤에있을 경우, 다음 전체 ×××를 보이지 않는, 아무 문제 없을 것이다.

오류의 예 :

switch (i) {
    case 1:
    x = 10;
    break;
    case 2: 
    x = 20;
    default:
    a = 40;
    break;

올바른 :

switch (i) {
    case 1:
    x = 10;
    break;
    case 2: // VIOLATION
    x = 20;
    break;
    default:
    x = 40;
    break;

나인 ') (System.getenv'를 사용하지 않는 것이 좋습니다

권장하지 않음 '은 System.getenv는 ()',이 방법은 매우 좋아 보인다,하지만 모든 시스템 환경 변수를 가지고있다. 약간의 불편 함이 발생할 수 있습니다 또한이 방법을 사용하지 마십시오.

오류의 예 :

void method (String name) 
{
    System.getenv (name);
    // 可以用其他方法来代替
}

이 방법을 사용하지 않을 경우, 우리는 대신 다른 방법을 사용할 수 있습니다. 예를 들어 '은 System.getProperty ()', 'getTypeName ()와 같은 자바 시스템 성질에서 발견 될 수있는 등이다.

텐, '\ n'또는 '\ r'지점을 사용하지 않는

이 두 마커는 특히 '\ n을'매우 일반적인 것 같다. 우리는 종종 지점으로 사용. 그러나 다른 시스템은 자바의 플랫폼 독립성에 어떤 의미 반대에 다른 문자의 지점, 이러한 문자를 사용합니다.

오류의 예 :

System.out.println("Hello\n" + name);

우리는 (),이 방법은 다른 플랫폼에서 동일한 기능을 제공 할 수와 같은에 println으로 대신 다른 방법을 사용할 수 있습니다. 후자는이 방법을 사용하는 것이 좋습니다 :

System.getProperty("line.separator")

일레븐, 그래서 모든 내부 클래스 "개인"

자바는 다른 클래스는 자바 바이트 코드와 클래스가 그런 개념입니다 포함되어 있습니다. 형식은 컴파일러 패키지 개인 클래스로 해석됩니다. 깊은 정도에서 개체 내부 전용 내부 클래스는 클래스는 동일한 액세스 패키지 다른 형태 내에서 액세스 될 수있다 포함 할 수있다.

오류의 예 :

public class INNER 
{
    class INNER_Class 
    {
        void setValue(int i)
        {
            _value = i;
            // 现在包就可以访问了
        }
    }
    private int _value;
}

그래서 우리는 개인 클래스를 추가 할 필요가 INNER_Class

십이 사도 인터페이스 직렬화를하지 않습니다

바이트 어레이는 직렬화 된 오브젝트를 포함하는 경우. *** (개인 포함) 함께 오브젝트 필드의 내부 상태를 읽을 수있는 사람.

오류의 예 :

public interface sample extends
java.io.Serializable

AMW시 I : 연구와 자바 개발 기술의 지식에 초점을 공유 할!

----종료----

자바 기술 개발의 그 알 수없는 규칙에 드웰

추천

출처blog.51cto.com/14409778/2422955