2009-07-24 3 views
3

많은 안전 기능과 제약 조건을 가진 Java가 왜 개발자가 소문자로 클래스 이름을 시작할 수 있는지 궁금합니다.Java (및 기타)의 클래스 이름을 규칙이 아닌 제안 만 대문자로 표시하는 이유는 무엇입니까?

아니면 유용 할 수있는 경우를 간과 한 적이 있습니까? 아니면 단순히 프로그래머를 보스로하지 않는 경우입니까?

+0

javac * MORE * 까다 롭다 고 묻는 사람은 처음입니다. –

+0

javac은 정말 느립니다. (BTW : -Xlint?) –

+0

솔직히, 나는 그것이 대회라는 것을 이해할 수있다. 그러나 나는 그것이 "어리 석다"는 것을 항상 따라하지 않는 이유를 정말로 이해하지 못한다. 솔직히 내가 읽은 가장 바보 같은 코드는 'IBMConstructor' 대신'IbmConstructorses'와 같이 문자를 그대로 따르는 방식입니다. 또는 상표가 붙은 응용 프로그램 이름이 _iBooks_와 같이 소문자로 시작하는 경우 'iBooksView'는'IBooksView'가 아닙니다. – user1944491

답변

2

프로그래밍 언어가 지난 몇 년 동안 협약을 강요해서는 안된다고 생각했기 때문입니다. 그러나 이제는 그 장면이 조금 바뀌고 루비 온 레일 (Ruby on Rail)처럼 "컨벤션 온 오버 컨피규레이션 (Conventions over configuration)"접근법에 유리한 분위기가 있습니다.

앞으로는 시대에 따른 프로그래밍 패턴 및 모범 사례에서 비롯되는 컨벤션 기반 프로그래밍 언어/프레임 워크에 대해 더 많이 볼 수 있습니다.

2

많은 것들이 바보 같은 아이디어이며 대부분 컴파일러에 의해 시행되지 않습니다.

최종 클래스에서 메서드 및 변수 이름 대문자 사용은 관습 상 문제이며 대부분의 언어에서 마찬가지입니다.

+0

예, 규칙의 문제 (코딩 표준)이지만 규칙을 구현할 필요가없는 이유는 아닙니다. –

0

아마 이것의 큰 요인은 언어 기록의 어느 시점에서든지 이것을 허용하면 기존 코드를 변경하기 위해이를 변경하고 싶지 않을 것입니다.

+0

이렇게 시작하면 좋겠지 만 나중에 제한을 제거하면 (예 : 다른 언어로 인터페이싱) 문제가 생길 수 있습니다. –

0

JLS가 슬픈 일을 허용하는 데는 여러 가지 방법이 있습니다. 예를 들어 수식어의 순서. 아마도 가장 나쁜 공격은 들여 쓰기입니다. 그러나 문법에 의해 합리적으로 다루어지기는 어렵습니다.

클래스 이름과 관련된 특정 문제는 IIRC에서 식별자가 클래스/인터페이스 이름인지 아닌지와 문법에 명확하지 않다는 것입니다. 선언 시점에서의 엄격 성은 가능하지만 나머지 문법은 더욱 복잡해집니다.

아마 시간 압력에이를 수 있습니다. 그리고 그 당시에도 자바는 보스로 여겨졌습니다. 사람들은 모든 종류의 혼란을 야기하는 모든 종류의 협약 (일반적으로 도서관과 다름)으로 C 및 C++를 작성하는 데 바쁘다. 그러나 그들은 신경 쓰지 않는 것처럼 보였다.

0

Perl에는 모범 사례가 아닌 일부를 적용하는 "엄격한 사용"지침이 있습니다. javac에 -strict 옵션을 추가하여 컴파일되는 코드에 최상의 연습 규칙을 적용하지 않는 이유는 무엇입니까? 이것은 여전히 ​​표준을 따르지 않지만 새로운 컴파일 (.java)에 적용하도록 .jar 또는 .class 라이브러리를 사용할 수 있습니다. 또는 더 나은 방법으로, 기본값으로 설정하고 -relaxed 지시문을 제공하십시오 집행을 중지하여 모든 사람이 어떤 이유에서 건 표준에 더 가깝게 따르지 않도록 할 수 있습니다.