하드코드 인코딩이란?

이른바 하드코드, 즉 하드코딩: 1. 설정 정보에 써야 할 정보를 프로그램 코드에 직접 써서 죽인다.2. 프로그램 코드에 마법값이 나타났다.
상황1, 예를 들어 우리는 메일을 발송하는 프로그램, 사용자 이름, 비밀번호, 서버 주소 등 설정 정보를 외부 설정으로 작성하고 프로그램 코드에서 설정 정보를 읽는다.그러나 만약에 우리가 프로그램 코드에 직접 써서 죽으면 매번 정보를 바꿀 때마다 다시 컴파일해야 하고 여러 곳에서 프로그램 코드에 이런 설정 정보가 나타나면 수정하기도 비교적 번거롭다. 이런 프로그램은 유지하기가 쉽지 않다.대부분의 프로그램 언어에서 고정된 수치를 하나의 표시로 정의한 다음에 이 특수 표시로 변수의 이름을 대체할 수 있다.태그 이름이 바뀔 때 변수 이름이 변하지 않습니다. 그러면 전체 프로그램을 다시 컴파일할 때 모든 변수가 고정된 값이 아닙니다. 이렇게 하면 변수를 바꾸는 목적을 더욱 쉽게 실현할 수 있습니다.편집기의 검색 교체 기능도 전체 변수 이름의 교체를 실현할 수 있지만, 많이 바꾸거나 적게 바꾸는 경우도 있을 수 있고, 컴퓨터 프로그램에서 어떠한 작은 오류도 큰 문제를 가져올 수 있다.가장 좋은 방법은 단독으로 변수명에 공간을 나누어 이런 변화를 실현하는 것이다.변경해야 할 변수 이름을 잠시 정의된 태그 이름으로 대체합니다.상황2에 대해 마법값이란 코드에서 직접 나타나는 수치로 수치가 기술된 부분의 코드에서만 이 수치가 대표하는 의미를 명확히 할 수 있다.
int [] array = new int[20];
 
for (int i = 0; i < 20; i++){
     
    System.out.print(array[i]);
}

위의 예에서 만약에 수조의 성명과 for 순환의 간격이 비교적 멀다면 for 순환 안의 제어 조건 i<20의 20이 무슨 의미인지 알기 어렵다.수조의 길이입니까, 아니면 수요에 따라 정의된 경계값입니까?의미가 모호할 수도 있어요.마법값은 코드의 가독성을 크게 떨어뜨린다.그리고 같은 수치가 여러 번 나오면 도대체 이 수치들이 같은 의미를 지니고 있는지 아무도 모른다.다른 한편, 같은 수치를 사용해야 하는 곳을 잘못 쓰면 발견하기 어렵다.따라서 우리는 마법 수치를 사용하지 않고static final로 상수를 정의하거나enum값을 사용해야 한다.
static final int LENGTH_OF_ARRAY= 20;
 
int [] array = new int[LENGTH_OF_ARRAY];
 
for (int i = 0; i < LENGTH_OF_ARRAY; i++){
     
    System.out.print(array[i]);
}

위 코드는 static final을 사용하여 상수 LENGTH 를 정의합니다.OF_ARRAY= 20; for 루프의 제어 조건 i ps: 주:static final 성명 상수를 사용하면 나중에 업데이트를 유지할 수 있습니다.변수의 값을 수정할 때 한 곳만 수정할 뿐 수정하지 말아야 할 상수를 수정할 염려가 없다.
하드코드는 고체화된 코드로 통상적으로 하드코드 방법을 사용하는 것을 피해야 한다.어떤 코드는 죽도록 쓸 수 없다. 그렇지 않으면 유지하기가 비교적 번거롭다.

좋은 웹페이지 즐겨찾기