功能膨胀——多少才算太多?

发布于 2024-07-18 08:18:49 字数 131 浏览 10 评论 0原文

我是一名计算机科学专业的学生,​​正在设计一个项目,我开始想知道什么是好的示例或软件,甚至是硬件,这些硬件既要对普通用户提供丰富的可用功能,又要对新用户来说过于吓人。 还有人可以推荐任何好的技巧/书籍来设计功能丰富但不“臃肿”的高质量应用程序吗?

I'm a computer science student designing a project and I've started wondering what are good examples or software, or even hardware that are toeing the line between being feature rich with good usable features for regular users and being too intimidating for new users. Also could anyone recommend any good tips/books for designing good quality applications that are feature rich but not "bloated"?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

颜漓半夏 2024-07-25 08:18:49

“让一切尽可能简单,但又不简单。” - 阿尔伯特·爱因斯坦

“完美不是当没有什么可以添加的时候,而是当没有什么可以删除的时候。” - 安托万·德·圣埃克苏佩里


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

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

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

尝试

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

"Make everything as simple as possible, but not simpler." - Albert Einstein

"Perfection is reached not when there is nothing left to add, but when there is nothing left to take away." - Antoine de Saint-Exupéry


I am not trying to be flippant but these quotes really are the best advice. Simplicity of design should be your goal. Not that achieving simplicity is easy! On the contrary, it is quite difficult but it is possible.

Try thinking about things a bit differently. Rather than

How many things can I add before this becomes bloated?

try

What are the fewest number of features and elements I can include while still providing a superior experience for my users?

执着的年纪 2024-07-25 08:18:49

以下是有关该主题的演示文稿中的一组很好的幻灯片:营救公主2.0

首要任务应该是保持应用程序易于使用。 除此之外,我只能说,要小心为想象中的用户编写功能:在开始编码之前确保有人确实需要它。

Here's a good set of slides from a presentation on the topic: Rescue Princess 2.0.

The first order of business should just be keeping the application easy to use. Beyond that, all I can say is, beware of writing features for an imaginary user: make sure someone actually needs it before you start coding.

记忆里有你的影子 2024-07-25 08:18:49

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

例如,看看 MS Word; 虽然您仍然可以打开它并开始打字,但如果您想对文档的某个部分重新编号而保留其余部分,请不要这样做。 如果您想生成包含对附录的引用的目录,但愿您不会这么做。 这类东西对于文字处理程序来说是必备的,Word 支持它,它只是以一种方式支持它,如果没有手册、几杯咖啡和用来止血的绷带,你就无法完成它。头靠在桌子上。

微软并不是唯一这样做的公司。 这种情况经常发生,涉及各种产品; 但我发现他们是最严重的罪犯之一。

As a direct answer to your question: pretty much any Microsoft product. I'm showing my bias here, but Microsoft has a strong tendency to keep their codebase, and add features on top of features until the original functionality of the app is nearly lost beneath mounds of accreted crud.

Look at MS Word, for example; while you can still just open it up and start typing, god forbid if you want to renumber a section of your document while leaving the rest alone. Heaven forbid if you want to generate a Table of Contents that includes references to an Appendix. This sort of stuff is something that is de rigeur for Word Processors, and Word supports it, it just supports it in a way that you cannot get it done without a manual, several cups of coffee, and bandages to stop the bleeding from banging your head on the desk.

Microsoft isn't alone in doing this; this thing tends to happen all the time, with all sorts of products; but they are among the worst offenders, I've found.

世态炎凉 2024-07-25 08:18:49

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

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

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

1: What do your users need, and want, and

2: Which features will you have time to implement?

Your question is pretty general. Which features constitute bloat? That kind of depends on whether you're writing an antivirus scanner, an OS or a word processor.

梦纸 2024-07-25 08:18:49

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

如果您正在开发 SDK,我建议将您的实现拆分为几个小库(而不只是一个大的 SDL 库,其中包括 SDL 核心、SDL_MixerSDL_Image、等)

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

您可能会添加一些新功能,有些人会认为“很棒”,而另一些人则认为“臃肿”。 否则,您的应用程序可能会达到一些人称之为“功能匮乏”而另一些人称之为“刚刚好”的地步。

There is no clear barrier between "good" and "too much".
However, it depends on what you want to do.

If you're developing a SDK, I recommend splitting your implementation in several small libraries(rather than just one big SDL library, there is the SDL core, SDL_Mixer, SDL_Image, etc.)

If you're developing an application, keep a module-based system and a plug-in mechanism.
That way, new features can be added more easily and bloat can be more easily detected.

You may get to a point where you'll add new features some will consider "great" and others "bloat". Otherwise, your application may reach a point that some will call it "feature-poor" and others will call it "just enough".

木緿 2024-07-25 08:18:49

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

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

从本质上讲,软件越简单、越切题越好。

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

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

糟糕的 UI 设计经常出现在专有硬件附带的专有软件中。 不幸的是,我无法给你任何我脑海中的例子。

This isn't an exact quote, but the idea was something like this:

A piece of software is perfect not when there is nothing more to add, but when there is nothing more to remove.

In essence, the simpler and more to-the-point is a software, the better.

To get examples of good software design, take a look at programs that are popular today. Google applications would be a nice place to look. Skype perhaps. Heh, even StackOverflow. :)

If you want intimidating, go to the world of CAD. Check out for example Blender. That's a freeware 3D designer software. Good tool I'm told, but the UI has so many buttons/panels/menus/etc. that it makes baby bunnies cry. Unfortunately I cannot say if this would be a good example of a "bad" UI. 3D designing is a very complex process and all those tools are probably in the right place. But it's definately intimidating. :)

A bad UI design can often be found with propieritary software that comes with propieritary hardware. Unfortunately I cannot give you any examples from the top of my head.

一影成城 2024-07-25 08:18:49

我总是倾向于以一种尽可能可扩展的框架的方式来设计我的项目。 限制因素包括性能、复杂性或第三方限制。
这样你就可以在完成基本结构后添加附加功能。 用户还可以添加他需要的功能。

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

开发一个功能丰富的应用程序/库并不难。 但它是开发一个可以由其他开发人员/用户轻松扩展以满足自己需求的应用程序。

I always tend to design my projects in a way that they're just skeletons which are as extensible as possible. Limiting factors are performance, complexity or Thirdparty-limitations.
This way you could add additional features after finishing the basic structure. A user could also add his needed features.

This probably does not work very good for GUI-applications which should have a good usability without much configuration, but I'm sticking good with this approach for those libs I develop. (They're used by other coders who like to have a highly modifable piece of software)

It's not very hard to develop an application/lib which is bloated with features. But it is to develop an app which could be easily extended by other developers/users to match their own needs.

開玄 2024-07-25 08:18:49

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

Develop a wide-ranging plug-in system so you add and take out stuff at any time. Problem solved. If only that was as easy as writing spaghetti code. ;)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文