Tôi muốn được quan tâm đến một số ví dụ C# trước và sau, một số ví dụ thành ngữ không thành ngữ. Các ví dụ không phải C# cũng sẽ ổn nếu chúng có ý tưởng. Cảm ơn.Mã thành ngữ là gì?
Trả lời
Các phương tiện thành ngữ theo các quy ước của ngôn ngữ. Bạn muốn tìm cách dễ nhất và phổ biến nhất để hoàn thành một tác vụ thay vì chuyển kiến thức của bạn từ một ngôn ngữ khác.
pythonphi ngữ sử dụng một vòng lặp với append:
mylist = [1, 2, 3, 4]
newlist = []
for i in mylist:
newlist.append(i * 2)
python thành ngữ sử dụng một danh sách hiểu:
mylist = [1, 2, 3, 4]
newlist = [(i * 2) for i in mylist]
Mã thành ngữ là mã thực hiện tác vụ phổ biến theo cách thông dụng cho ngôn ngữ của bạn. Nó tương tự như một mẫu thiết kế, nhưng ở quy mô nhỏ hơn nhiều. Thành ngữ khác nhau theo ngôn ngữ. Một thành ngữ trong C# có thể là sử dụng một trình lặp để lặp qua bộ sưu tập thay vì lặp qua nó. Các ngôn ngữ khác không có trình vòng lặp có thể dựa vào thành ngữ vòng lặp.
Một số ví dụ:
Quản lý nguồn lực, không thành ngữ:
string content;
StreamReader sr = null;
try {
File.OpenText(path);
content = sr.ReadToEnd();
}
finally {
if (sr != null) {
sr.Close();
}
}
Idiomatic:
string content;
using (StreamReader sr = File.OpenText(path)) {
content = sr.ReadToEnd();
}
Iteration, phi ngữ:
for (int i=0;i<list.Count; i++) {
DoSomething(list[i]);
}
Cũng không thành ngữ:
IEnumerator e = list.GetEnumerator();
do {
DoSomenthing(e.Current);
} while (e.MoveNext());
Idiomatic:
foreach (Item item in list) {
DoSomething(item);
}
Lọc, phi ngữ:
List<int> list2 = new List<int>();
for (int num in list1) {
if (num>100) list2.Add(num);
}
thành ngữ:
var list2 = list1.Where(num=>num>100);
Niềng răng là thành ngữ Java ;-) –
Thực tế mà nói, nó có nghĩa là viết code theo một cách nhất quán, tức là tất cả các nhà phát triển làm việc trên cơ sở mã của bạn nên làm theo các quy ước tương tự khi viết các cấu trúc mã tương tự.
Cách thành ngữ là cách phù hợp với kiểu của mã khác, cách không thành ngữ có nghĩa là bạn đang viết loại hàm nhưng theo cách khác.
ví dụ: nếu bạn đang lặp một số lượng nhất định các hạng mục, bạn có thể viết các vòng lặp bằng nhiều cách:
for (int i = 0; i < itemCount; i++)
for (int i = 1; i <= itemCount; i++)
for (int i = 0; i < itemCount; ++i)
vv
gì là quan trọng nhất là phong cách lựa chọn được sử dụng một cách nhất quán. Bằng cách đó mọi người trở nên rất quen thuộc và tự tin với cách sử dụng nó, và khi bạn theo dõi một cách sử dụng có vẻ khác, nó có thể là dấu hiệu của một sai lầm được giới thiệu, có thể là do một lỗi, ví dụ:
for (int i = 1; i < itemCount; i++)
Tôi đoán tôi nghĩ thành ngữ có nghĩa là "cách tốt nhất" thay vì chỉ là một tiêu chuẩn tùy ý. Nhưng tôi đoán một cách tốt nhất là tùy thuộc vào ngữ cảnh. – MrBoJangles
Trong PHP đôi khi tôi gặp phải mã như:
foreach ($array as $value) {
$trimmed[] = trim($value);
}
return $trimmed;
nào idiomatically có thể được thực hiện với:
return array_map('trim', $array);
- 1. Thành ngữ lập trình là gì?
- 2. Thuật ngữ "thuật ngữ vector" là gì?
- 3. Ngữ cảnh LLVM là gì?
- 4. Ngôn ngữ templating là gì?
- 5. Ngôn ngữ ISO là gì?
- 6. Chuyển ngữ cảnh là gì?
- 7. Ngôn ngữ keo là gì?
- 8. Ngôn ngữ M là gì?
- 9. Mã Boilerplate, mã nóng và điểm nóng là gì?
- 10. "Mã sản xuất" là gì?
- 11. Ngữ nghĩa của withValueBackReference là gì?
- 12. Ngữ pháp thích hợp cho ngôn ngữ này là gì?
- 13. Cách thành ngữ để cài đặt gói Debian bằng Chef là gì?
- 14. Tương đương clojure của thành ngữ Python "if __name__ == '__main__'" là gì?
- 15. Ví dụ tốt về mã scala thành ngữ
- 16. Ngữ cảnh đồ họa là gì? (iOS)
- 17. Dự đoán ngôn ngữ WinRT là gì?
- 18. Phương ngữ Mvel trong Drools là gì?
- 19. "Ngôn ngữ chính" nghĩa là gì?
- 20. Thuật ngữ "BODMAS" có nghĩa là gì?
- 21. "Ngữ nghĩa chính thức" là gì?
- 22. Ngữ cảnh lối ra có nghĩa là gì đối với WaitHandle.WaitOne nghĩa là gì?
- 23. Chuỗi ký tự này trong thành ngữ biểu thức boolean là gì?
- 24. Thành ngữ (defn -main ...) có nghĩa là gì trong chương trình clojure?
- 25. Cách thành ngữ thực hiện chuyển đổi/định dạng "số nguyên" trong javascript là gì?
- 26. Sự khác biệt giữa ngôn ngữ theo định hướng thành phần và ngôn ngữ hướng đối tượng là gì?
- 27. Giải pháp Scala thành ngữ tới mã lệnh bắt buộc
- 28. Mã hóa phổ biến nhất của mỗi ngôn ngữ là gì?
- 29. MediaPlayer.OnInfoListener "mã 703" là gì?
- 30. Cách thành ngữ để thực hiện các khóa ngoại trong CouchDB là gì?
Làm thế nào để có được một tiêu cực, đây là một câu hỏi darn tốt! – MrBoJangles
Đồng ý, câu hỏi hay với một số câu trả lời hay. –
[Tính năng ẩn của C#] (http://stackoverflow.com/q/9033/4830) có đầy đủ các thành ngữ C#. Không phải tất cả mọi người đều quan tâm đến bạn, nhưng nhiều người trong số những kẻ đơn giản có số lượng upvotes cao có thể được coi là thành ngữ. Và một số câu trả lời mô tả các lựa chọn thay thế không phải là thành ngữ. –