我看到“编程习惯用法”一词泛滥,好像人们通常都理解它一样。但是,在搜索结果和stackoverflow中,我看到了所有内容...
从微:
- 递增变量
- 代表无限循环
- 交换变量值
到中等:
到宏:
是否有一个统一的“编程习惯用法”定义?由于“编程习惯用语”在许多范围内使用:
- 微观:句法差异或通用语法
- 媒介:常见样式和样式
- 宏:将编程范例作为习惯用法
在任何这些范围中使用该短语是否有效?到目前为止,答案集中在句法成语上。其他人也有效吗?
我看到“编程习惯用法”一词泛滥,好像人们通常都理解它一样。但是,在搜索结果和stackoverflow中,我看到了所有内容...
从微:
到中等:
到宏:
是否有一个统一的“编程习惯用法”定义?由于“编程习惯用语”在许多范围内使用:
在任何这些范围中使用该短语是否有效?到目前为止,答案集中在句法成语上。其他人也有效吗?
Answers:
编程习惯用法是用特定语言编写任务的常用方法。例如,经常在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
用这些语言编写循环有很多可能性。使用该习语可以使经验丰富的读者立即识别出该习语。然后,他们可以将时间花在更重要的问题上。
(非编程)语言中的“成语”是特定语言所特有的一种说法或表达。通常,某些不遵循语言的“规则”而存在的原因是,以母语为母语的人“只知道”它的意思。(例如,在英语中,我们说“一致”,但“出来的线” -这将是惯用语)
将其移到编程领域,我们得到如下信息:
if(c=GetValue())
{...}
实际上意味着:
c = GetValue();
if (c != 0)
{....}
每个C / C ++程序员都能理解的语言,但完全会使来自不同编程语言的人感到困惑。
参见http://en.wikipedia.org/wiki/Programming_idiom
编程习惯用法是一种模式,算法或结构化代码的方式。谈论编程习惯用法就是谈论那些在代码中经常出现的模式或提出新的模式。
熟悉习惯用法(尤其是较大的习惯用法)的好处是,在查看代码时,您可以看到几行代码,但是由于它是一个特定的习惯用法,因此您可以从心理上表示并认为该代码是单个习惯用法,而不是必须分别阅读和理解每一行。
说代码不是惯用语,就是说它没有以允许人类读者有效思考代码的方式来构造自身。
成语是语言学的术语。这是一组单词,从字面上看并不是说什么。例如,当某人感觉不舒服时说某人“处于天气之下”。这个特殊的短语来自于水手谈论乘客的话题,晕船的乘客会进入“天气”甲板以下,而船舶的运动较少。但是我们大多数人都不是水手,也不知道这句话的字面意思。
在编程中,即使大多数指令都是英语单词,但大多数公众也不理解。例如“ for循环”。尽管它们对程序员有意义,但对大多数其他人却没有。
摘自WikiPedia:编程习惯用法是一种用一种或多种编程语言表达重复构造的方法。
我猜你已经走那条路了!
习惯用法是可以在多个地方识别的“模式”。
我不会说这与特定的编程语言有关。
Iterator foo;
foo.reset();
while (foo.next())
{
print(foo.value());
}
这就是我所说的“为每个”的成语的摘要,它在多种语言中略有不同。
成语的另一个很好的例子是Socket。所有声称具有套接字的平台在概念上都以相同的方式工作,也就是说,它们都具有大致相同的接口。
习惯用语是一种特定于特定语言的表达方式。例如,这里有一些英语习语。
您可以对此进行推断,以将概念应用于编程。
尽早陷入困境:以相同的方式执行相同的过程。积累习语。标准化。莎士比亚与您之间的唯一区别(!)是他的成语列表的大小,而不是他的词汇量。
它来自惯用语,可以将编程中的“成语”一词的含义概括为带有含义和含义的短语,而这些短语的含义和含义比单词的总和还重要。在编程中,大多数代码片段实际上都是惯用语。“保持或符合语言的自然表达方式”
可以将编程习语描述为可转移到不同情况的一类解决方案。考虑while { ... }
VSdo {} while
这些都是惯用的,它们包含了同样的话,但顺序进行的一个重要区别。确切的措词会因语言而异,但是基本含义和含义会有所不同。例如do {} while
,无论使用哪种语言或语句来实现它,都将始终执行一次。作为惯用语,它是思想的可移植形状。它可以在许多情况下使用,并用不同的词(语句/命令)表达,但基本结果始终是相同的。