it-swarm-ko.tech

관용적 코드는 무엇입니까?

나는 C # 이전과 이후의 일부 예제, 비 이디 오틱 대 관용적 예제에 관심이 있습니다. 비 C # 예제는 아이디어를 얻는다면 좋을 것입니다. 감사.

80
MrBoJangles

관용적 표현은 언어 관습을 따르는 것을 의미합니다. 지식을 다른 언어로 이식하는 대신 작업을 수행하는 가장 쉽고 가장 일반적인 방법을 찾고 싶습니다.

비 아이디 오틱 python 추가와 함께 루프 사용 :

mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
    newlist.append(i * 2)

관용구 python 목록 이해를 사용하여 :

mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist] 
107
Corey Goldberg

몇 가지 예 :

자원 관리, 비 관용적 :

string content;
StreamReader sr = null;
try {
    File.OpenText(path);
    content = sr.ReadToEnd();
}
finally {
    if (sr != null) {
        sr.Close();
    }
}

관용 :

string content;
using (StreamReader sr = File.OpenText(path)) {
    content = sr.ReadToEnd();
}

반복, 비 관용적 :

for (int i=0;i<list.Count; i++) {
   DoSomething(list[i]);
}

또한 비이 디오 틱 :

IEnumerator e = list.GetEnumerator();
do {
   DoSomenthing(e.Current);
} while (e.MoveNext());

관용 :

foreach (Item item in list) {
   DoSomething(item);
}

필터링, 비이 디오 틱 :

List<int> list2 = new List<int>();
for (int num in list1) {
  if (num>100) list2.Add(num);
}

관용 :

var list2 = list1.Where(num=>num>100);
31
JacquesB

관용적 코드는 사용자의 언어에 공통적 인 방식으로 일반적인 작업을 수행하는 코드입니다. 디자인 패턴과 비슷하지만 훨씬 작은 규모입니다. 숙어는 언어마다 크게 다릅니다. C #의 관용구 중 하나는 반복자를 사용하여 반복하지 않고 컬렉션을 반복하는 것입니다. 반복자가없는 다른 언어는 루프 관용구에 의존 할 수 있습니다.

12
Bill the Lizard

PHP에서 때때로 다음과 같은 코드가 나타납니다.

foreach ($array as $value) {
    $trimmed[] = trim($value);
}
return $trimmed;

어떤 관용적으로 구현할 수 있습니까?

return array_map('trim', $array);
6
jmoz

실제로 말하자면 일관성있는 방식으로 코드를 작성한다는 의미입니다. 즉, 코드 기반에서 작업하는 모든 개발자는 유사한 코드 구성을 작성할 때 동일한 규칙을 따라야합니다.

관용적 인 방법은 다른 코드의 스타일과 일치하는 방식입니다. 비 관용적 인 방법은 기능의 종류를 다른 방식으로 쓰고 있음을 의미합니다.

예 : 특정 수의 항목을 반복하는 경우 여러 가지 방법으로 루프를 작성할 수 있습니다.

for (int i = 0; i < itemCount; i++)

for (int i = 1; i <= itemCount; i++)

for (int i = 0; i < itemCount; ++i)

기타

가장 중요한 것은 선택한 스타일이 일관되게 사용된다는 것입니다. 그렇게하면 사람들이 사용 방법에 대해 매우 친숙하고 자신감을 갖게되고, 다르게 보이는 사용법을 감시 할 때 실수로 인한 실수 일 수 있습니다.

for (int i = 1; i < itemCount; i++)
5
RickL