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"?
8 回答
"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?
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.
作为对您问题的直接回答:几乎所有 Microsoft 产品。我在这里表达了我的偏见,但微软有一种强烈的趋势,即保留他们的代码库,并在功能之上添加功能,直到应用程序的原始功能几乎在堆积如山的垃圾堆下消失。
例如,查看 MS Word;虽然您仍然可以打开它并开始输入,但如果您想重新编号文档的一部分而留下其余部分,那么上帝禁止。如果您想生成一个包含对附录的引用的目录,那么天堂禁止。这类东西是文字处理器的必备工具,Word 支持它,它只是支持它,如果没有手册、几杯咖啡和绷带来止血,你就无法完成它。头放在桌子上。
微软并不是唯一这样做的。这种事情总是会发生,各种产品;但我发现他们是最严重的罪犯之一。
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.
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".
这不是一个确切的报价,但这个想法是这样的:
一个软件不是完美的,不是没有什么可添加的,而是没有什么可删除的。
从本质上讲,软件越简单、越切题越好。
要获得优秀软件设计的示例,请查看当今流行的程序。谷歌应用程序将是一个不错的地方。也许是 Skype。嘿,甚至是 StackOverflow。:)
如果您想吓人,请前往 CAD 世界。查看例如Blender。这是一个免费的 3D 设计器软件。有人告诉我是个好工具,但 UI 有很多按钮/面板/菜单/等。它让小兔子哭泣。不幸的是,我不能说这是否是“糟糕”用户界面的一个很好的例子。3D 设计是一个非常复杂的过程,所有这些工具可能都在正确的位置。但这绝对是令人生畏的。:)
使用专有硬件附带的专有软件通常会发现糟糕的 UI 设计。不幸的是,我无法从我的脑海中给你任何例子。
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.
开发一个范围广泛的插件系统,以便您随时添加和取出内容。问题解决了。如果这就像编写意大利面条代码一样简单。;)