是专注单一功能?还是让应用程序尝试做不同事情?

  可以说在现在的iPhone上有两种方向不同的应用程序:一种是用来专注在某件事情上,然后把它做深做透,而另一种则是尝试在一个应用程序中做着许多不同的事情。那么,这两种里哪一种更好呢?而这也正是作者的本篇文章希望讨论的主题。

  两种方法的哲学思想

  目前的OS X操作系统核心是UNIX,而对此,X Window团队成员之一的 Mike Gancarz曾经有过对UNIX的如下著名论述:“应该让每个程序做一件事去做到极致”。而这进一步也影响到了许多Mac和iOS应用开发者的设计理念,而这一思想流派的奉行者通常都会让他们开发的应用围绕一个功能去做到最好。

  在iPhone的每个页面上,页面都为应用程序提供了许多空间。让用户合理地管理应用程序是很重要的。

  在另一方面,也有应用程序想要试图去满足用户的多种需求。而这些应用程序通常会提供一些广泛的功能(例如“写作”),又或者是一个由许多不同服务组成的完整平台,比如像Twitter或者是Facebook。而这一流派则认为,如果让一个应用提供多种功能,那么将会至少比在屏幕上放许多个图标要更加方便,看起来也会更加舒服许多。

  这两种不同思想要考虑的第一个问题是:应用程序的功能。

  数字化碎片

  如果每个应用程序只解决一个问题,其带来的问题可能是需要用许多不同的应用来达到一个目标。例如说,我希望拥有最好的Twitter体验。如果我想要发微博,Birdhouse的用户体验很好;如果我正在忙着,但又不想错过Twitter上的信息,我会用Trickle来减少Twitter上的信息干扰。

  不可否认,这些应用程序在他们专注的方向上都做得不错,但在你有限的首页空间上你必须做出选择:我到底是更喜欢发言呢,还是喜欢看别人的微博?或者,在主屏幕上放两个Twitter相关的应用程序?

  Tweetbot在一个应用中提供了更多的功能,占用主屏幕的空间也更少。

  在这种情况下,像Tweetbot这样功能齐全又好用的应用比起Birdhouse和Trickle更能抢占用户的主屏空间。但问题是,如果这种“多功能”的应用程序不如单一功能的应用程序好用呢?

  优化

  单一应用的亮点是们如何进行优化。如果开发者决定专注于一件事,他们可以将这件事做得很棒。最近的一个例子是,Facebook推出了他们的FacebookMessenger应用。虽然你也可以在Facebook iOS应用中阅读信息,而单一的Messenger应用让你可以更快地进入程序,与他人对话,等等。毫无疑问,Facebook应用还可以提供更多的功能,例如可以让你可以阅读你订阅的信息,更改状态、添加照片,等等。

  Facebook应用中有许多功能,而Messenger应用更专注于即时的沟通需求。

  优化才是最重要的。如果在像IM这样重要的功能中加入其他你或许不会用上的功能,你很难得到一个真正优秀的IM体验。Facebook Messenger表明,单一用途在你的首页上完全可以拥有一席之地,哪怕它不能像它的老大哥应用那样提供的完整的功能。

  寻找平衡点

  这不一定是一个零和游戏,你不会只使用单一功能的应用程序或多功能应用。对于一个应用程序来说找到一个平衡点,虽然这个平衡点可能很难找到。

  真正影响你使用什么样的应用的因素是你的优先使用级别。以Twitter为例,无论是Trickle、Birdhouse还是Tweetbox,这都与你的使用习惯有关。另一个例子是Evernote这是一个功能强大的应用程序,你可以用Evernote做很多事情。但这是否意味着你不能使用类似Simple note这样应用来将一些不需要格式的纯文本保存在云端?绝对不是。

  建立你自己的应用

  这篇文章对于开发者来说可能会引起更多的思考。重要的是要考虑清楚你的应用程序需要解决什么样的问题,你是否会有时间或资源来将很多事情躲到一个还好的程度,或者是专注一件事情,做到令人称绝的程度。

  同样重要还有你提供的服务,你的市场在哪里?你的用户是谁?你的应用与其他应用程序是否相关?这是否是一个能够处理用户所有需求的解决方案?这需要在早期做决定,并向潜在的客户进行验证。

  但毫无疑问,编写一个有许多功能的优秀应用程序要比编写一个单一功能的优秀应用程序需要更多的资源。重要的是在你开始做之前你必须跳出手中的活,对于全局有一个明确的印象再开始去做,把你的用户当做活生生的人,而不是为你提供收入和利润的市场。如果你无法做到像Google那样什么都能插上一腿,千万不要考虑那些大而全的东西。

  结论

  很明显,这个命题是更多的取决于个人的喜好。就我个人而言,我不介意有像Messenger这样的单一功能应用占据我的主屏幕,但我也利用一些多功能应用,像Facebook,Tweetbot,Evernote等等。这完全取决于你想要什么样的应用:是将一件事情做到最好的应用程序,或者能够灵活处理多项任务的能力?

  原文链接:Are Single-Function Apps Better?

时间: 2024-11-18 12:48:33

是专注单一功能?还是让应用程序尝试做不同事情?的相关文章

单一功能的应用程序是否给我们更好的用户体验?

在iPhone上有两种不同的应用程序:一种是专注于某一件事并把它做深做透,另一种则是在一个应用程序中尝试去做许多不同的事情.那么,哪一种更好呢?这正是本篇文章希望讨论的主题. 两种方法的哲学思想 OS X操作系统的核心是UNIX,对此X Windowhttp://www.aliyun.com/zixun/aggregation/7380.html">团队成员之一的Mike Gancarz曾经有过对UNIX的如下著名论述:"让每个程序做一件事做到极致".这进一步影响到了许

专注核心功能

当我还小的时候,出了什么毛病都爱用风油精.无论是虫叮蚊咬,晕车晕船还是感冒发烧,风油精都能派上用场.因此当我颇为自豪的向我的小伙伴炫耀道"风油精什么都能治"的时候,他的一句"风油精什么都能治,什么都治不好"着实给我泼了一头冷水. 随着我逐渐长大,我遇到了更多"万能"的产品:能刮胡子能双卡双待能遥控电视的手机.能祛痘美白淡斑保湿去黑头的面膜.能交友能婚恋能看视频能做3D特效的网站等等.而各种"闪亮"的多功能产品,带着更高昂的价格

开发保留标准浏览器功能的AJAX应用程序(3)

ajax|标准|程序|浏览器 使用碎片标识符,我们可以创建一个"Ajax-URI",其中的客户端部分和服务器端部分使用"#"隔开. JavaScript提供了window.location()函数,以便通过URI更新浏览器的历史记录和地址.此外,我们可以使用window.location.hash()直接访问碎片标识符. 在下面的代码片断中,您可以看到如何通过对选择框使用onchange事件处理程序来扩展我们的代码,该处理程序使用一个"Ajax-URI&q

开发保留标准浏览器功能的AJAX应用程序(4)

ajax|标准|程序|浏览器 案例分析:包含后退按钮和深链接的Ajax论坛 Backbase Ajax引擎是一个成熟的.功能丰富的Ajax软件包.对所有传统Web可用功能的支持是Backbase的优点之一. Backbase DevNet包含了为开发人员提供的.与Backbase和Ajax有关的信息.而开发人员论坛是DevNet的一部分. Backbase Web应用程序(包括DevNet及其讨论论坛)是使用Backbase构建的.为了演示该论坛功能丰富和易于到达的特点,我们将逐步遍历论坛的典型

开发保留标准浏览器功能的AJAX应用程序(1)

ajax|标准|程序|浏览器 作者:Mark Schiefelbein出处:bea责任编辑: 方舟 [ 2006-03-15 08:32 ]Ajax应用程序由于其丰富的功能.交互性以及快速的响应能力而得到人们的普遍赞许   Ajax应用程序由于其丰富的功能.交互性以及快速的响应能力而得到人们的普遍赞许.它可以使用XMLHttpRequest对象动态地加载数据,而不是加载新的页面.在它大肆进行宣传以及许多人兴奋的同时,有评论指出,Ajax应用程序丢失了浏览器的一些重要功能,包括对后退前进按钮的支持

开发保留标准浏览器功能的AJAX应用程序(2)

ajax|标准|程序|浏览器 在Ajax中支持后退按钮的基本设计思想 在这一节中,我们将讨论在Ajax应用程序中支持后退按钮所需的基本步骤,并给出说明所需步骤的简单示例代码. 简单示例程序如图1所示,在界面中将有一个选择框,它有两个值:"Year 1"和"Year 2".对于这个程序,我们将在选择框值发生改变时跟踪历史记录.这意味着用户可以首先选择"Year 2"然后单击后退按钮后退到先前的选择. 开发保留标准浏览器功能的AJAX应用程序(2)-

开发保留标准浏览器功能的AJAX应用程序

ajax|标准|程序|浏览器 Ajax应用程序由于其丰富的功能.交互性以及快速的响应能力而得到人们的普遍赞许.它可以使用XMLHttpRequest对象动态地加载数据,而不是加载新的页面. 在它大肆进行宣传以及许多人兴奋的同时,有评论指出,Ajax应用程序丢失了浏览器的一些重要功能,包括对后退前进按钮的支持. 本文将首先阐明为什么在Ajax应用程序中除非显式地构建后退/前进按钮以及其它浏览器功能,否则它们将无法运行的原因.然后,我们将简要介绍开发人员如何解决这些问题.最后,我们将看到有关Back

紧急求助一个实现新媒体数据获取、转换、存储等功能的可运行程序的源代码!!

问题描述 紧急求助一个实现新媒体数据获取.转换.存储等功能的可运行程序的源代码!! 求实现新媒体数据获取.转换.存储等功能的可运行程序的源代码!!!!!!求大神 解决方案 看看这个是不是有帮助 DirectShow流媒体信息获取及图像转换http://blog.sina.com.cn/s/blog_455332580100gt24.html

c++网络程序怎么做单元测试,涉及到多线程

问题描述 c++网络程序怎么做单元测试,涉及到多线程 急!谢谢!c++网络程序怎么做单元测试,涉及到多线程,而且测试的类内部还调用了其他类来创建线程. 解决方案 就是测试对应的函数好了,比如程序发送数据API,UT测试这个,看是否数据发送过去 解决方案二: 既然都说明了是单元测试,那么就按单元测试的方法来进行. 单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的.很明确的功能是否正确.通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为.例如,你可能把一个很大