什么是编程习惯用法?
我看到“程序devise习语”这个短语就好像它被普遍理解一样。 然而,在search结果和stackoverflow我看到的一切…
从微:
- 增加一个variables
- 代表一个无限循环
- 交换variables值
中等:
- PIMPL
- RAII
- 格式,评论,风格…
macros观:
- 编程范例或共同的图书馆function成语
- 过程模式如成语
- 成语的集合等于一个新的范例
“编程习惯用法”是否有单一的通用定义? 由于“编程习语”在很多领域都有使用,
- Micro:句法细微差别或通用语法
- 中等:共同的风格和模式
- macros观:编程范例如成语
在这些范围的任何一个中使用这个短语是否有效? 迄今为止的答案都集中在句法成语上。 其他人是否也有效?
编程习惯用法是以特定语言编写任务的常用方式。 例如,一个循环通常是这样写在C:
for (i=0; i<10; i++)
PHP会理解一个类似的结构:
for ($i = 1; $i <= 10; $i++)
但是在PHP中循环访问数组是令人沮丧的。 在这种情况下,您可以使用:
foreach ($arr as $value)
而在Ruby中,您将使用:
(1..10).each
对于循环,或者:
array.each
用这些语言编写循环有很多种可能性。 使用这个习语,可以让有经验的读者立即辨认。 然后,他们可以把时间花在更重要的问题上。
(非编程)语言中的“成语”是某种语言所特有的一种说法或expression方式。 一般来说,一些不符合语言“规则”的东西,只是因为母语人士“知道”它的意思而存在。 (例如,用英文,我们说“在线”,但是“不在线” – 这将是惯用的)
把它移到编程领域,我们得到如下的东西:
if(c=GetValue()) {...}
这些actaually意味着:
c = GetValue(); if (c != 0) {....}
每个C / C ++程序员都能理解,但是完全不知道有人来自不同的编程语言。
见http://en.wikipedia.org/wiki/Programming_idiom
编程习惯用法是一种模式,algorithm或结构化代码的方式。 谈谈编程习语就是要谈论那些在代码中经常出现的模式或者提出新的模式。
熟悉成语,特别是较大的成语的好处是,在查看代码时,可以看到几行代码,但由于它作为特定的习惯用法是熟悉的,因此您可以在思维上代表和思考代码,必须单独阅读和理解每一行。
说代码不是惯用的,就是说它不是以让读者有效地思考代码的方式来构build自己的。
来自维基百科 :一种编程习惯用法是一种用一种或多种编程语言expression循环构造的手段。
我猜你已经走了那条路了!
一个成语是一个“模式”,可以在几个地方确定。
我不会说这与某种编程语言有什么关系。
Iterator foo; foo.reset(); while (foo.next()) { print(foo.value()); }
这是我称之为“每个”成语的一个片段,在多种语言中expression方式略有不同。
一个成语的另一个很好的例子是Socket 。 所有声称拥有套接字的平台,在概念上都以相同的方式工作,即它们都有大致相同的接口。
由于大型项目是从小型项目发展而来,所以我们必须发展一套标准程序结构,我们已经确定了它们的正确性 – 我们称之为成语 – 并学习使用具有成本价值的组织技术将它们组合成更大的结构。
程序员应该获得好的algorithm和习惯用法。
Alan J. Perlis – SICP前言
成语是一个来自语言学的术语。 这是一组字,不是字面意思是说什么。 比如说某人在感觉不舒服的时候是“天气不好”的。 这个特别的短语来自水手们在谈论乘客,晕船乘客会低于船舶运动较less的“天气”甲板。 但是我们大多数人不是水手,也不知道这句话的字面意思。
在编程很多时,即使大部分指令都是英文单词,也不被大众所理解。 例如“for循环”。 虽然他们对程序员有意义,但他们不会对大多数其他人。
早日进入车辙:以相同的方式进行相同的过程。 积累成语。 标准化。 莎士比亚和你之间的唯一区别就是他的习语清单的大小 – 而不是他的词汇量。
- ALAN PERLIS,程序中的Epigrams
成语是一种说某种特定语言的东西的方式。 例如这里有一些英语成语 。
你可以推断这一点,将这个概念应用于编程。