【问题标题】:Feature bloat - how much is too much?功能膨胀 - 多少才算太多?
【发布时间】:2009-04-28 20:41:34
【问题描述】:

我是一名计算机科学专业的学生,​​正在设计一个项目,我开始想知道什么是好的示例或软件,甚至是硬件,它们在功能丰富且对普通用户有用的功能和对普通用户来说太吓人之间徘徊新用户。还有人可以推荐任何好的技巧/书籍来设计功能丰富但不“臃肿”的优质应用程序吗?

【问题讨论】:

    标签: software-quality


    【解决方案1】:

    “让一切尽可能简单,但不要更简单。” - 爱因斯坦

    “完美不是在没有什么可以补充的时候达到的,而是在没有什么可以拿走的时候达到的。” - 安托万·德·圣埃克苏佩里


    我并不是要轻率,但这些引用确实是最好的建议。设计的简单性应该是您的目标。并不是说实现简单很容易!相反,这很困难,但有可能。

    尝试以不同的方式思考问题。而不是

    在这变得臃肿之前我可以添加多少东西?

    试试

    在为用户提供卓越体验的同时,我可以包含的功能和元素最少是多少?

    【讨论】:

      【解决方案2】:

      以下是关于该主题的演示文稿中的一组很好的幻灯片:Rescue Princess 2.0

      首要任务应该是让应用程序易于使用。除此之外,我只能说,谨防为虚构的用户编写功能:在开始编码之前确保有人真正需要它。

      【讨论】:

        【解决方案3】:

        直接回答您的问题:几乎所有 Microsoft 产品。我在这里表达了我的偏见,但微软强烈倾向于保留他们的代码库,并在功能之上添加功能,直到应用程序的原始功能几乎在堆积如山的垃圾堆下消失。

        以 MS Word 为例;虽然您仍然可以打开它并开始输入,但如果您想重新编号文档的一部分而留下其余部分,请不要这样做。如果您想生成一个包含对附录的引用的目录,那么天堂禁止。这类东西是文字处理器的必备工具,Word 支持它,它只是支持它,如果没有手册、几杯咖啡和绷带来止血,你就无法完成它。把头放在桌子上。

        微软并不是唯一这样做的;这种事情经常发生,各种产品;但我发现他们是最严重的违规者之一。

        【讨论】:

          【解决方案4】:

          1:您的用户需要什么、想要什么,以及

          2:您将有时间实现哪些功能?

          你的问题很笼统。哪些特征构成臃肿?这取决于您是在编写防病毒扫描程序、操作系统还是文字处理器。

          【讨论】:

            【解决方案5】:

            “好”和“太多”之间没有明显的界限。 但是,这取决于您想做什么。

            如果您正在开发 SDK,我建议您将实现拆分为几个小型库(而不是一个大型 SDL 库,还有 SDL 核心、SDL_MixerSDL_Image 等)

            如果您正在开发应用程序,请保留基于模块的系统和插件机制。 这样,可以更轻松地添加新功能并更轻松地检测到膨胀。

            您可能会添加一些新功能,有些人认为“很棒”,有些人认为“臃肿”。否则,您的应用程序可能会达到某些人称其为“功能较差”而其他人称其为“刚刚好”的程度。

            【讨论】:

              【解决方案6】:

              这不是一个确切的引用,但想法是这样的:

              一个软件不是完美的,不是没有什么可添加的,而是没有什么可删除的。

              本质上,软件越简单,越中肯。

              要获得优秀软件设计的示例,请查看当今流行的程序。谷歌应用程序将是一个不错的地方。也许是 Skype。嘿,甚至是 StackOverflow。 :)

              如果您想吓人,请前往 CAD 世界。查看例如Blender。这是一个免费的 3D 设计器软件。有人告诉我是个好工具,但 UI 有很多按钮/面板/菜单/等。它让小兔子哭泣。不幸的是,我不能说这是否是“糟糕”用户界面的一个很好的例子。 3D 设计是一个非常复杂的过程,所有这些工具可能都在正确的位置。但这绝对是令人生畏的。 :)

              使用专有硬件附带的专有软件通常会发现糟糕的 UI 设计。不幸的是,我无法从我的脑海中举出任何例子。

              【讨论】:

                【解决方案7】:

                我总是倾向于将我的项目设计为尽可能可扩展的骨架。限制因素是性能、复杂性或第三方限制。
                这样,您可以在完成基本结构后添加其他功能。用户还可以添加他需要的功能。

                这可能不适用于 GUI 应用程序,它应该具有良好的可用性而无需太多配置,但对于我开发的那些库,我坚持使用这种方法。 (它们被喜欢拥有高度可修改的软件的其他编码人员使用)

                开发一个功能臃肿的应用程序/库并不难。但它是开发一个应用程序,可以很容易地被其他开发者/用户扩展以满足他们自己的需求。

                【讨论】:

                  【解决方案8】:

                  开发一个范围广泛的插件系统,以便您随时添加和取出内容。问题解决了。如果这就像编写意大利面条代码一样简单。 ;)

                  【讨论】:

                    猜你喜欢
                    • 2011-02-28
                    • 2021-07-25
                    • 2012-09-23
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-11-26
                    • 1970-01-01
                    相关资源
                    最近更新 更多