我会对一些前后c#示例感兴趣,一些非惯用与习惯用法的例子。非C#的例子会很好,如果他们能够实现这个想法的话。谢谢。什么是惯用代码?
Q
什么是惯用代码?
51
A
回答
68
习惯的意思是遵循语言的约定。你想找到完成任务的最简单和最常用的方法,而不是从不同的语言移植你的知识。
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]
10
语言代码是以常用语言执行常见任务的代码。它与设计模式相似,但规模小得多。习语差异很大。 C#中的一个习惯用法可能是使用迭代器遍历集合,而不是遍历它。没有迭代器的其他语言可能依赖于循环习语。
23
一些例子:
资源管理,非惯用
使用带有附加一个循环非惯用蟒蛇:
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);
3
实事求是地讲,这意味着以一致的方式编写代码,即谁对你的代码基础工作,所有开发人员都应该遵循编写类似的代码结构时使用相同的约定。
因此,习惯用法是与其他代码风格相匹配的方式,非惯用方式意味着您正在以不同的方式编写函数类型。
例如如果你是一个循环一定数量的物品,你可以写在几个方面的循环:
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++)
4
在PHP中我有时会遇到这样的代码:
foreach ($array as $value) {
$trimmed[] = trim($value);
}
return $trimmed;
哪些惯用可以实现:
return array_map('trim', $array);
相关问题
- 1. 什么是用serde_json编码迭代器的惯用方法?
- 2. 什么是较好的编码习惯?
- 3. 什么是“按照惯例编码”?
- 4. Golang:有评论的代码行的惯例是什么?
- 5. 什么是“代码”
- 6. 是什么代码是什么意思?
- 7. 在PyQT中显示QDialog之后,执行代码的习惯用法是什么?
- 8. 使代码更scala惯用
- 9. 什么是替代snprintf(3)的C++习惯用法?
- 10. 这是Erlang代码的习惯吗?
- 11. 为什么Object.hashCode()不遵循Java代码惯例
- 12. Python什么代码惯例拆分参数成行?
- 13. 什么是代码页0?
- 14. avio_set_interrupt_cb的代码是什么?
- 15. 什么是Windows代码页?
- 16. 这是什么代码?
- 17. 什么是LESS源代码?
- 18. 这是什么SATCHMO代码?
- 19. 是什么下列代码
- 20. 是什么在此代码
- 21. 这段代码是什么?
- 22. 什么是这个代码
- 23. 代码含义是什么?
- 24. 什么是代码样式?
- 25. 什么是类型代码?
- 26. 什么是C#代码做:
- 27. 这是什么在代码?
- 28. 代码是什么意思?
- 29. 什么是从代码
- 30. 什么是代码优化?
我如何得到一个负数,这是一个不错的问题! – MrBoJangles 2008-09-17 15:13:18
同意,一些很好的答案很好的问题。 – 2008-09-17 15:57:41
[C#隐藏功能](http://stackoverflow.com/q/9033/4830)充满了惯用的C#。并不是所有的人都在意你,但是许多有点赞赏的简单单线球员可以被认为是惯用的。有些答案也描述了非惯用的选择。 – 2013-01-16 21:23:21