프로그래밍에서 상수(static final) 로 선언하지 않은 숫자를 매직 넘버, 문자열을 매직 리터럴이라 한다. 이를 정적(static)이고 변경 불가능(final)한 상수로 선언하여 사용하자.
코드에서 상수로 선언되어 있지 않은 숫자, 문자열은 무엇을 의미하는지 확신할 수 없다.
따라서 그 의미를 파악하기 위해 클래스를 이해하고, 코드의 흐름을 이해하기 위한 시간과 노력이 필요하게 된다.
이를 상수로 선언하게 됨으로써 불분명한 값들은 이름을 가지게 된다.
이름을 가지게 된 값은 그 이름만으로도 어떠한 역할을 하는지 알수 있게된다.
https://javabom.tistory.com/28
https://ko.wikiqube.net/wiki/Magic_number_(programming)
public static void main(String[] args) {
InetSocketAddress address = new InetSocketAddress(8000);
...
}
코드만 보고서는 8000이 무엇을 의미하는지 알기 어렵다.
private static final int PORT = 8000;
public static void main(String[] args) {
InetSocketAddress address = new InetSocketAddress(PORT);
..
}
코드만 봐도 8000이 PORT를 의미하는 것을 알 수 있다.
HttpContext란 URI 경로에서 핸들러로의 매핑을 나타낸다. 한번 만들어지고나면, 모든 요청은 핸들러 오브젝트를 불러서 처리된다. 컨텍스트는 경로로 구분된다.
여기서 path는 root URI 경로를 나타낸다.
만약 변수.equals("문자열")일 경우에, 변수가 null일 경우 NullPointerException이 발생하는 문제가 있다. 그래서 "문자열".equals(변수)를 하면 그 문제를 해결 할 수 있다. 찾아본 바에 의하면, 오히려 NullPointerException 문제를 터트릴 수 있을 때 확실히 터트리는 것(?)을 선호해서 전자를 쓰는 사람도 있다고 하지만, 개인적으로는 후자가 나은 것 같다.
if (method.equals(GET)) {
vs
if (GET.equals(method)) {
할 수 있다 생각하면 할 수 있다.