자바에는 수많은 예약어 들이 있다. 이는 이미 사용중인 단어이니 사용하지 못하도록 컴파일 에러를 발생시킨다.
해당 예약어를 모두 외울 필요 없이 IDE에서 사용하면 컴파일에러로 알려준다.
자바에서는 왜 goto를 사용하지 못할까? goto를 사용하게 되면 프로그램의 실행 순서가 인간이 이해하기에 너무 복잡해질 가능성이 있기 떄문이다.
goto를 사용하게 되면 프로그램의 실행순서를 이리저리 이동할 수 있게 된다. 그러한 이동이 잦아지면 소스를 이리저리 따라가면서 프로그램을 이해해야 하는데, 그리 만만한 작업이 아니다.
구조적 프로그래밍은 함수를 쓰라는 것이다. 함수를 쓰면 좋은 이유는 우선 중복 코드를 한 곳에 모아서 관리할 수 있고, 논리를 함수 단위로 분리해서 이해하기 쉬운 코드를 작성할 수 있기 때문이다. 여기에 더해 구조적 프로그래밍의 지침 중에는 고유 사용 시 문제가 발생하기 쉬운 전역 변수보다는 지역 변수를 쓰라는 것도 있다.
함수는 중복 코드 제거와 노리를 분할하기 위한 용도다. 제어하면 생각나는 것은 순서도와 제어문이다. 함수는 객체 지향 언어에서라면 메소드와 같은 것이다. 결론적으로 객체 지향 언어에서 절차적/구조적 프로그래밍의 유산은 메소드 안에서 확인할 수 있다. 객체 지향 프로그래밍에서 제어문이 존재할 수 있는 유일한 공간이 메소드 내부이기 때문이다.
여기서 한자기 의문은 함수와 메소드는 무엇이다르냐이다. 결과는 전혀 다르지 않다. 절차적/구조적 프로그래밍에서 함수라 불렀는데 객체 지향에서는 좀 다르게 불러야 하지 않을까? 그래서 메소드라고 불렀다고 한다. 그래도 굳이 차이점을 찾는다면 함수는 클래스나 객체와 아무 관계가 없지만 메소드는 반드시 클래스 정의 안에 존재해야 한다는 것이다. 객체 지향 언어에서 클래스 외부에 존재할 수 있는 것은 없다.