我想知道低级功能和低级功能之间的区别。顶级功能

时间:2009-03-11 07:11:10

标签: javascript project-management function

查尔斯·西蒙尼(Charles Simonyi)介绍了“组建真正的大型软件团队的想法,他们创建了一个编写顶级函数的超级优秀程序员,同时根据需要将低级函数的实现交给了一个笨拙的初级程序员团队他们打电话给这个职位项目经理。“

我想知道什么是顶级功能,我该如何识别它?我的语言是Javascript。到目前为止,这是我所知道的唯一语言,请为我提供使用JavaScript的示例。

顺便说一句,上面的引用来自Joel Spolsky。查看他的博客并阅读如何成为项目经理。

由于

6 个答案:

答案 0 :(得分:17)

越接近人类语言,功能就越高。

越接近机器语言,功能越低。

我只是在努力,但这里有一些例子:

高级功能:

Car.Start()
Car.MoveTo(Home)

低级别功能:

Car.Insert(Key);
if (Car.IsKeyInserted() == False)
   return False;

Car.StartEngine();
Car.ApplyAccelerator(0.1f);
Car.ChangeGear();
Car.RotateWheel(-25);

答案 1 :(得分:2)

当我们在编程中谈论“高级”和“低级”时,它通常指的是抽象级别。高级函数是抽象细节的函数,这里是高级抽象的一个例子:

$('div#foo p').show('fast');

该片段来自jQuery JavaScript框架,它演示了一项非常复杂的任务,但可以让您轻松启动它。较低级别的抽象将是这样的:

$('div#foo p').animate({height: 'show', width: 'show', opacity: 1}, 200);

它仍然是jQuery但是涉及更多细节,它是更低级别。当然,你可以更低:

animate(document.getElementById('foo').getElementsByTagName('p'), {
    height: 300, width: 600, opacity: 1, alphaFilter: 1
}, 200);

(使用自定义构建的animate方法)

等。等。

最佳抽象水平总是在激烈争论中。过高可能导致abstraction leak但是变低可能效率低下并且浪费时间,特别是如果存在更高的抽象。

答案 2 :(得分:2)

顶级功能是描述在子或功能之外编写程序代码的术语。从声明内容到实际运行程序代码(如vbs / jscript)有各种级别。

通常不鼓励或不允许使用预期复杂的语言。例如,VB只允许const和声明和暗淡。 C#不允许任何顶级。

我们通常使用更高级别来描述语言的抽象。

在某些语言中,该术语将是顶级方法。

我记得很久以前读过这篇文章。

http://blogs.msdn.com/b/ericlippert/archive/2009/06/22/why-doesn-t-c-implement-top-level-methods.aspx链接回此网站Why C# is not allowing non-member functions like C++

答案 3 :(得分:1)

这指的是函数所在的调用堆栈的距离。程序启动时,操作系统调用main()或top level,其中包括对下一个较低级别函数的调用。每个人又调用其他函数来执行更多基本任务,最终调用操作系统中的函数,例如打开文件。低级函数是程序中的函数,它们不调用您编写的任何其他函数(但使用操作系统或框架来计算其结果等)。

答案 4 :(得分:0)

简单的问题可以用几句话来回答,但潜在的主题涵盖整本书。然而,与Javascript无关,只是说Javascript可用于创建函数。

Valdez先生是对的,但这完全取决于你的职能定义的抽象程度。

还有其他软件设计和架构方法可供选择

This one has a section that answer your question quite nicely

This page discuss the subject with a broader perspective

答案 5 :(得分:-1)

实际上,只有高 er 或低 er 级功能。

function higherlevel(){
  foo                
  .init()             // aha, this is daisychained
  .loadFromDatabase() // gotcha
  .render()           // makes sense
  .logProgress()      // right. 
}

function render(){    // lowerlevel
  // if 
  // while
  // for
  // throw/catch
  // _.get(foo,'bar.flop')
  return foo 
}

可以很容易地标识为JS中的

菊花链函数作为较高/较低级别的函数。

可以将私有,受保护的类方法和/或下划线功能标识为较低级别的功能。

可以将存在于全局范围内的功能标识为顶级功能。它们可以是较低级别的( window.querySelector(..)例如在DOM上操作),也可以是较高级别的( window.close()