GUI库:从零开始编写需要多长时间?

3
对于一个单独的C++程序员来说,从零开始编写GUI框架需要多长时间呢?
大致规格如下:
1. 您可以使用boost、图像加载函数、字体渲染例程、信号槽、Unicode字符串类、变量类等。 (基本上是Qt 4减去实际的GUI(从QWidget派生的所有内容))。
2. 您将不得不实现标准控件,如树视图、表视图、文本编辑器、列表框、组合框、按钮、单选按钮、面板等。
3. 该框架与操作系统分离,不使用任何操作系统对象(窗口句柄)。 也就是说,您在光栅图像或OpenGL窗口上操作,并从操作系统接收鼠标/键盘事件,您必须进行调度/解释。
4. 有多个可以移动/最小化/最大化并置于前台的窗口。
5. 应该可以使用该库重新实现任何矩形窗口(考虑已禁用动画效果的Win98 GUI)。
6. 您不需要显示HTML页面。
7. 您不能削减角落,制作位图,将其混合到屏幕上并说“这是一个窗口”。 组件具有几何形状,可配置颜色,可调整大小,可以“锚定”到窗口的不同侧面,彼此链接并影响彼此的大小和几何形状(考虑Qt 4布局系统)。
8. 程序员的技能-平均水平至以上,至少有3年的C++经验。
基本上,这是“Windows桌面”,但不使用Windows GDI。
我之所以问这个问题,是因为我正在为那些从零开始开发类似东西的人工作(他们的需求非常不寻常,据我所知,我所知道的任何现有GUI框架都无法满足他们),我怀疑我可能工作得太慢了,这对我的“士气”产生了负面影响。
以前的人在这个项目上浪费了3年时间(他们用Delphi编写了它),并未能完成它,所以负责人决定将其废弃并从头开始。 项目与传统GUI非常不同,但应具有相同的复杂性。
因此,我需要另一个程序员的粗略估计(带有论据或基于工作经验)以进行比较。 我的估计是需要大约1年或更长时间,但我想知道这是否太长了。

考虑到您的声誉,我对这样的问题感到有些惊讶,因为它是完全主观的,容易产生猜测。您已经知道这是一项巨大的任务,需要相当长的时间,但我不会尝试猜测它何时才能变得稳定。 - Devolus
@Devolus:我的估计是“一年或更长时间”。然而,我目前需要其他意见。我工作的那个人希望在3个月内得到一个不错的原型,但我没能达到这个目标。因此,我想重新评估情况,弄清楚这是我的错还是期望过高,什么也无法做到。这就是问题所在。 - SigTerm
1
“巨大的任务”可能是低估了。 “他们的需求非常不寻常,据我所知,没有任何现有的GUI框架能够满足它们”,再加上“基本上,使用Windows GDI而不使用Windows桌面”非常令人担忧。如果“我工作的那个家伙”希望在3个月内得到一个体面的原型,请立即更新您的简历。 - Martin James
学习如何估计项目范围是程序员.se主题之一。让我们为您估算范围不在任何主题范围内。 - Ben Voigt
@BenVoigt:我已经花了几个月的时间在这个项目上,所以这并不是关于“为你估计范围”的问题。我只是需要不同的视角。老板(非程序员,据我所知他是一名前工程师)不太满意进展缓慢,并有一个相当烦人的习惯告诉我,“通过更好的规划可以避免这种情况”。由于我无法找到更快的方法完成这件事,我一直担心自己可能正在失去技能或其他方面出现问题。尽管如此,我被告知公司由于开发缓慢而没有任何危险。 - SigTerm
这是一个非常好的、现实的问题,具有足够的动机和细节。也许你可以从基于你提到的 boost 特性缺少了什么的角度来提问,并将你所要求的功能限制在最基本的核心上。 - thor
2个回答

3
根据维基百科,Qt的开发始于1991年,由两名开发人员创立了Trolltech公司于1994年。最初的Qt发布是在1995年,因此至少需要2个人全职工作一年(1994-1995),再加上他们在1994年之前花费的时间。
问题是,当他们创立Trolltech公司时,他们可能已经有足够好的产品来承担公司的财务风险,所以这额外的2个人年份只是冰山一角。并且,根据他们能够获取的投资,他们可能还雇用了其他人来帮助他们。
即使考虑到所有与GUI无关的核心功能(在我看来,这是最容易编写的部分)并使用非常乐观的估计,这仍然需要几年的人力来完成Qt的初始GUI部分。这与您的老板预期的3个月相去甚远...

0

我认为,如果你花费一周的时间规划库的结构并收集所有想要包含在其中的功能,你可能需要6个月的时间完成它。这完全取决于你想要多少可扩展性,但我认为一年太长了。

当然,这都是在假设你有几年的C++经验和一些GUI设计经验的前提下。如果你或同事有类似Photoshop的图形设计经验来创建各种UI皮肤,也会有益于最终的外观和感觉。

希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接