문제

데 왜 사람들이 같은 케이스에서 감도는 프로그래밍 언어가?나지 않을 시작하려고 불꽃 전기집니다.
개인적으로 좋아하지 않기 때문에 나는 그것을 찾아 나의 생산성이 나는 이제까지 시도했다는 언어는 경우 민감도,마음을 내가 천천히 온난화/을 사용해 이제는 내가 사용하는 C#,F#많음 사용됩니다.

왜 그렇게 당신이 그것을 좋아합니까?

환호

도움이 되었습니까?

해결책

일관성. "foo", "foo", "foo"및 "foo"가 동일 한 것으로 간주되면 코드를 읽기가 더 어렵습니다.

어떤 사람들은 모든 모자에 모든 것을 쓰고 모든 것을 읽기 쉽게 만들 것입니다.

사례 민감도는 대문자 협약에 따르면 "동일한 이름"을 다른 방식으로 쉽게 사용할 수 있도록합니다.

Foo foo = ...  // "Foo" is a type, "foo" is a variable with that type

다른 팁

vb.net의 장점은 대소 문자에 민감하지는 않지만 IDE는 사용중인 식별자의 "공식"케이스로 모든 것을 자동으로 재구성한다는 것입니다. 따라서 일관성이 있고 읽기 쉽습니다.

단점은 VB 스타일 구문을 싫어하고 C 스타일 연산자, 구두점 및 구문을 선호한다는 것입니다.

C#에서는 적절한 유형을 사용해야하는 것을 절약하기 위해 항상 CTRL 공간을 치고 있습니다.

케이스별로 만 다른 이름을 지정할 수 있다고해서 좋은 생각이라는 의미는 아닙니다. 좋은 아이디어가 더 큰 스코프로 누출되면 오해로 이어질 수 있기 때문에 응용 프로그램이나 하위 시스템에서이를 조종하는 것이 좋습니다. 레벨이지만 내부적으로 기능이나 방법 또는 클래스에만 허용합니다.

사례 감도는 코딩 스타일이나 일관성을 시행하지 않습니다. Pascal Case가 상수 인 경우 컴파일러는 불평하지 않습니다. Pascal 케이스를 사용할 때마다 파스칼 케이스를 사용하는 데 입력하도록 강요합니다. 나는 개인적으로 경우에만 다른 두 가지 항목을 시도하고 구별해야한다는 것이 자극적이라고 생각합니다. 짧은 코드 블록으로 쉽게 수행 할 수 있지만 매우 큰 코드 블록으로 똑바로 유지하기가 매우 어렵습니다. 또한 사람들이 실제로 사례 감도를 사용할 수있는 유일한 방법은 모두 동일한 명명 규칙을 엄격하게 따르는 경우입니다. 사례 민감도가 아니라 값을 추가 한 이름 지정 규칙입니다.

회사의 내부 컴파일러를 유지하고 하이브리드로 만들고 싶은 유혹을 받고 있습니다. 식별자에 원하는 케이스를 사용할 수 있으며 동일한 케이싱으로 참조해야하지만 같은 이름으로 다른 이름을 지정하고 다른 이름을 지정해야합니다. 다른 경우에 오류가 발생합니다.

Dim abc = 1
Dim y = Abc - 1 ' error, case doesn't match "abc"
Dim ABC = False ' error, can't redeclare variable "abc"

현재 사례에 민감하지 않으므로 기존의 몇 가지 오류를 고칠 수 있었고 아무도 너무 많이 불평하지 않을 것입니다 ...

사건을 좋아하는 많은 사람들-감광도 어떤 사례를 오해하십시오.안에민감도는 의미합니다.

VB .NET은 대소 문자를 사용하지 않습니다. 그렇다고 변수를 ABC라고 선언 한 다음 나중에 ABC, ABC 및 ABC라고 언급 할 수는 없습니다. 그것은 당신이 다른 것 중 하나로 입력하면 IDE가 자동으로 올바른 형태로 변경한다는 것을 의미합니다.

사례 감도는 입력 할 수 있음을 의미합니다

dim a as string

그리고 vs는 자동으로 올바르게 사용 된 것으로 변경됩니다

Dim a As String

실제로 이것은 모든 소문자를 입력하고 IDE가 당신을 정확하게 할 수 있기 때문에 Shift 키를 거의 누르지 않아도됩니다.

그러나 C#은 예전만큼 나쁘지 않습니다. C#의 Intellisense는 2002 년과 2003 년 대 비보다 훨씬 공격적이므로 Keystroke 수가 상당히 떨어집니다.

나는 그것을 믿을 적용하는 일관성,가독성을 향상시킬 수 있는 코드의 수 있는 눈을 구문 분석,종이 더 낫다.

class Doohickey {

  public void doSomethingWith(string things) {
     print(things);
  }
}

를 사용하여 케이스 규칙을 만드는 코드가 나타나는 매우 위하여 표준화하는 어떤 프로그래머입니다.선택할 수 있는지,클래스 형태,방법을 쉽습니다.그것은 훨씬 더 될 것입을 하는 경우 사용할 수 있던 어떤 방법으로 그것:

Class DOOHICKEY {
  Public Void dosomethingwith(string Things) {
    Print(things);
  }
} 

말하지 않는 사람들이 쓸 추한 코드,하지만 많은에서 방법 자본화하고 문장 부호 규칙을 작성할 수 있을 쉽게 읽을 경우 민감도 또는 케이싱 기준을 확 코드는 쉽게 읽을 수 있습니다.

사례 민감도가 무엇인지, 그리고 이에 따라 올바르게 대답하는 가독성의 차이를 이해하는 것이 중요하다고 생각합니다. 다른 케이싱 전략을 갖는 것이 유용하지만, 사례에 민감하지 않은 언어 내에있을 수 있습니다.

예를 들어 Foo는 변수에 사용될 수 있고 Foo는 Java와 VB 모두에서 상수로 사용할 수 있습니다. VB가 나중에 FOO를 입력 할 수 있다는 작은 차이가 있지만, 이것은 대부분 가독성의 문제이며 희망적으로 어떤 형태의 코드 완료에 의해 고정되어 있습니다.

매우 유용한 것은 객체의 인스턴스를 원할 때입니다. 일관된 이름 지정 컨벤션을 사용하는 경우 객체의 출처를 쉽게 알 수 있습니다.

예를 들면 : foobar foobar = new foobar ();

유형의 하나의 객체 만 필요할 때, 객체가 무엇인지 즉시 명백한 경우 가독성이 크게 증가합니다. 여러 인스턴스가 필요할 때, 당신은 분명히 새로운 (희망적으로 의미있는 이름)를 선택해야하지만 작은 코드 섹션에서는 myfoobar, x, 또는 같은 시스템이 아닌 소문자의 첫 번째 문자가있는 클래스 이름을 사용하는 것이 의미가 있습니다. 그것이 무엇을하는지 잊을 다른 임의의 가치.

물론이 모든 것이 맥락의 문제이지만,이 맥락에서 나는 10 중 9 번이 지불한다고 말할 것입니다.

여기에는 많은 답이 있지만, 나는 Stackoverflow 경쟁자를 재미있게 만드는 명백한 예를 아무도 지적하지 않았다는 것에 놀랐습니다.

expertSexChange != expertsExchange

Camel Case 변수 이름을 사용하면 사례가 매우 중요합니다.

더 많은 옵션을 제공합니다.

벨 벨 벨

모두 다릅니다.

게다가, 그것은 단지 고용 된 너트를 고용 한 초보자를 몰아냅니다. 총계가 왜 나오지 않는지 알아 내려고합니다; o))))))))))))))

이제는 실제로 모든 것을 일관된 방식으로 입력해야하기 때문입니다. 그리고 갑자기 일이 말이되기 시작합니다.

intellisense 또는 다른 이름으로 동일한 것을 특징으로하는 괜찮은 편집자가있는 경우 사례에 민감한 이름을 파악하는 데 아무런 문제가 없어야합니다.

사례 민감도는 광기입니다! Foo, Foo, Foo 및 Foo라는 변수를 모두 같은 범위로 사용하는 미친 코더는 어떤 종류의 미친 코더를 사용합니까? 당신은 사례 민감도의 이유가 있다는 것을 결코 확신시키지 않을 것입니다!

여기에는 심리학 문제도 있다고 생각합니다. 우리는 프로그래머이며 사물을 미세하게 구별합니다. 'A'는 'A'와 동일한 ASCII 값이 아니며 컴파일러가 동일하게 고려할 때 이상하게 느껴질 것입니다. 이것이 내가 입력 할 때 이유입니다

(목록 'a'b 'c)

LISP (Repl에서)에서

(알파벳)

내 마음은 즉시 '내가 말한 것이 아닙니다!'라고 외칩니다. 상황이 같지 않을 때 ~이다 다른 것으로 간주되어야합니다 ...

나는 보통 휴가 중에 델파이 프로그래밍에 시간을 보내며, 대부분의 시간은 C ++와 masm 만 사용합니다. 그리고 한 가지 이상한 점 : 델파이에있을 때, 나는 사례 민감도를 좋아하지 않지만 C ++에있을 때 - 나는 그렇게합니다. 나는 사례 민감도를 좋아하고, 비슷한 단어 (함수, 변수)가 비슷하게 보이고 구문에 과도한 제한을 두지 않기 때문에 비 사례 민감도를 좋아합니다.

서 .NET Framework 개발자 가이드 자본화 규칙, 케이스,감도:

대소문자 지침 전적으로 식별자를 만들게 읽고 인식하고 있습니다.케이싱할 수 없 용을 회피하는 수단으로 이름 라이브러리 사이에 충돌이 요소입니다.

가정하지 않는 모든 프로그램 언어는 대소문자를 구분합니다.그 하지 않습니다.이름에 따라 다를 경우 혼자입니다.

코드의 유형을 구별하는 데 유용합니다.

예를 들어 Java에서 : 대문자로 시작하면 아마도 수업 일 것입니다. All_caps가 아마도 상수 일 것입니다.

그것은 더 많은 다양성을 제공합니다.

보다 전문적인 코딩 방법처럼 느껴집니다. 당신이 의미하는 바를 알아 내기 위해 컴파일러가 필요하지 않아야합니다.

VB3/4를 더 많이 사용했을 때 오래 전에 당신과 같은 느낌이 들었습니다. 이제 나는 주로 C#에서 일합니다. 그러나 이제 나는 IDE가 상징을 찾고 다른 경우에 좋은 지능을주는 훌륭한 일을한다는 것을 알았습니다. 또한 다른 경우가있는 항목에 대해 다른 의미를 가질 수 있기 때문에 내 코드에서 더 많은 유연성을 제공합니다.

또한 파일 이름을 참조하는 Linux에서 작업하는 경우 좋은 습관입니다. 나는 Linux에서 일하기 위해 Windows Coldfusion 응용 프로그램을 포트해야했고 그것은 완전히 악몽이었습니다. 또한 일부 데이터베이스에는 사례 민감도가 켜져 있습니다. 기쁨을 상상해보십시오.

플랫폼에 관계없이 좋은 습관이며 확실히 일관된 개발 스타일로 이어집니다.

IMHO 전적으로 습관의 문제입니다. 당신이 익숙해 져야 할 사람이 자연스럽고 옳게 보입니다.

왜 좋은지 나쁜지에 대한 많은 정당화를 내놓을 수 있지만, 그들 중 누구도 많은 물을 가지고 있지 않습니다. 예 :

  • 더 많은 식별자를 얻을 수 있습니다. foo vs Foo vs FOO.
  • 그러나 경우에만 다른 식별자가 있으면 좋은 생각이 아닙니다.
  • Type-Info를 이름으로 인코딩 할 수 있습니다 (예 : FooBar= typeName, fooBar= 함수, foo_bar= 변수, FOO_BAR= 매크로)
  • 그러나 어쨌든 헝가리 표기법으로 그렇게 할 수 있습니다

자연어도 작동하는 방식이기 때문입니다.

Progamming에는 사례 민감도에 대해 말해야 할 것이 있습니다 (예 : 공공 재산 FOO 및 해당 개인/보호 필드 FOO). Intellisense를 사용하면 실수를하지 않는 것은 그리 어렵지 않습니다.

그러나 OS에서는 사례 민감도가 미쳤다. 나는 정말로 파일 Foo를 갖고 싶지 않습니다 그리고 foo 그리고 같은 디렉토리에 foo. 이것은 내가 할 때마다 *닉스 일을 할 때마다 크레이를 몰아냅니다.

나에게 사례 민감도는 인수와 공공 재산 또는 기능에 대한 값과 같은 범위와 같은 범위에 대한 연극 일뿐입니다.

종종 다른 범위에서 동일한 변수 이름 (동일한 것을 나타내는)을 사용해야하며 사례 감도는 접두사에 의지하지 않고이 작업을 수행하는 데 도움이됩니다.

Wew, 적어도 우리는 더 이상 헝가리 표기법을 사용하지 않습니다.

레거시 vbscript ASP 코드에서 수년 동안 일한 후 .NET으로 이동했을 때 C#을 선택했으며 주요 이유 중 하나는 사례 민감도였습니다. 사람들이 컨벤션을 따르지 않았기 때문에 이전 코드는 읽을 수 없었습니다. 코드는 읽을 수없는 혼란이었습니다 (음, 가난한 VBScript IDE가 도움이되었습니다).

C#에서 우리는 이름 지정 규칙을 정의 할 수 있으며 모든 사람이이를 따라야합니다. 무언가가 올바르게 포장되지 않은 경우, 리팩토링을 사용하여 이름을 바꿀 수 있지만 이는 IDE 기능입니다) 클래스 나 변수의 모든 코드 전체에서 동일한 방식으로 명명되므로 문제가 없습니다.

마지막으로, 모든 것이 올바르게 포장되면 훨씬 더 읽기 쉬운 것 같습니다. 어쩌면 사례 민감도없이 글을 쓰는 것이 더 빠르지만 코드 검토 및 유지점에서 포인트를 유지하는 것이 가장 좋은 것은 아닙니다. 예를 들어 'foo', 'foo', 'foo', 'foo'를 찾는 것보다 모든 'foo'줄을 찾는 것이 더 쉽습니다.

사례에 민감한 언어는 ASCII가 아닌 문자 세트로 쉽게 일반화되지 않습니다. 영어 이외의 언어에 대한 적절한 사례 변환은 간단한 작업이 아니며 시스템 로케일에 따라 다릅니다.

구문을 ASCII로 제한하지 않는 한 (또는 ASCII 문자에 사례 무감각 만 적용), 또한 로케일을 제한 해야하는 경우 사례 무감각은 매우 어렵습니다.

문자의 상류 및 하부 사례를 결정하기위한 규칙은 잘 정의되지 않았으며 무손실도 없습니다.

일부 문자는 하나 이상의 '소문자'형태를 가질 수 있습니다. 어떤 사람들은 올바른 대문자 형태가 무엇인지에 대해 동의하지 않을 것입니다.

(일부 언어와 환경에서는 거의 캐릭터가 이름으로 사용될 수 있습니다)

고려하다 C#에서 toupper ()와 toupperInvariant ()의 차이점은 무엇입니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top