软件的极简主义

最近在公司同时带了好几个项目,在开发过程中总会遇到不同的需求然后不断的修改,最后回过头来对比最初的项目设计发现一个很小的项目最后竟然变得如此之复杂,冗余的API和大量复杂的接口。

而这一切就是为了满足不同的客户需求,降低客户的使用成本。但是这样的设计最终会是一个软件面临死亡(复杂过度以至于在重构的代码大大增加)。

反思自己所带的项目内容和开发现状,我想到了一个词---软件的极简主义

软件的极简主义,虽然目前没有明确的定义,就当作是我的瞎想吧。

一般认为“极简主义”是设计界的一种风潮,但是软件发展至今,好像也渐渐有了这样的趋势,甚至我认为这是未来的必然,我们经常听人说“flexible”这个词,字面上来看就是“灵活的”,但是具体到这个软件是否灵活,就不太好判断了。

但是,简单的软件,一定是灵活的。

极简主义的的大敌

软件极简主义的三个大敌:配置文件,冗余的参数,和大量复杂的接口。

很多人热爱配置,迷恋配置,认为越多的配置项意味着软件越强大,适用范围越广,但这是九十年代的事了。实际我们仔细翻翻常用的软件,90%的配置都是多余,没有人明白他是做什么的,也没有人希望去改变他。比方很多软件的configure文件,常常能列出上百个配置项,但是我们真的需要这么多吗?不,我们需要默认的那些值就行了。何谓默认?因为软件的设计者觉得这些是最优化也最有可能被选择的配置,那么既然是最优配置,我们又有什么理由去改变他们?

再说说冗余的参数,linux中有一个非常强大的命令’tar’,从man文件看来他起码有二十来个参数,但是我真的需要这么多参数吗?其实我只要记住压缩是-c,解压是-x就可以了,那么何必为了1%的功能而去加上这99%的参数呢。

最后是复杂的接口,举个栗子,全文搜索引擎solr非常强大,能满足我们对于文档索引的各种需求。但是他使用起来可不简单,原因我想就是因为他那种sql式的查询接口,把一件很单纯的事情搞复杂了。我们来设想一下,需要找出包含某几个关键词的文章,必要的条件是什么?关键词,文档,没了。而文档是存储在服务器的,为什么我们提供了关键词之后,仍需加上各种条件,他才能告诉我们想要的答案呢?我想软件发展到一定的智能,他就应该像一部能说话的百科全书,提问,然后告诉我们答案即可。

凡事都要对比着看,所以我们找点软件来对比一下。

redis 与 sql

redis很灵巧,所有源代码加起来不满5M,但是他很强大,hash结构能取代我们80%对于sql的需求。他也有配置文件,但是选项很少,而且每一项都有详尽的注释,并且使用默认配置就可以应对大部分的情况。唯一值得诟病的就是他的接口种类繁多,但好在这些接口很有规律可循,你只需了解了redis的基础数据结构,那么跟着官网的文档就很容易搞懂所有接口的用途,而且大部分的接口都只接受3个以内的参数,这可好记多了。我刚接触redis的时候,只花了半个小时就能玩得起来,我想面对sql恐怕没人能这么轻松的掌握吧。

zmq 与 rabbitmq

zmq是我见过的最具有极简主义风格的软件(组件)。一方面他要面对的任务非常繁杂,在异步通信中所有我们可能遇到的情况,他都为我们考虑到了,但是他又将底层的复杂问题掩盖起来,让我们看到一个光滑的表面,深藏功与名。同样来看看他的同行rabbitmq,关键词:中心服务,多线程,模式单一,最后一个特点,慢!而仅有1.7M的zmq,快是最直观的感觉,而分布式和扩展性则是锦上添花。有人说zmq就像乐高积木,每个人都能搭出他想要的形状,这话一点都不错。

结语

软件的设计日新月异,将来肯定会接触到更多优秀的软件,也许哪天我想法变了,也许哪天遇到了更神奇的方案,可能我会补充在这里。

时间: 2024-11-05 12:33:30

软件的极简主义的相关文章

518抽奖软件:极简主义设计的践行者

软件用途 用于企业年会抽奖,通过电脑连接LED或投影仪,实现大屏幕随机滚动抽取照片.号码.姓名的电脑软件.软件自带音效.精美的背景图,可以提升大中型年会的气氛.也可用于婚庆等其它场所. 开发原因 市面上的同类软件太复杂.缺乏设计,主要表现为: 1. 含没必要的功能,如锁定屏幕.从某奖项开始抽.临时修改奖品: 2. 菜单混乱不直白,分类没用好,没表明软件主体结构: 3. 将复杂的高级功能显摆出来,只会让普通用户迷惑: 4. 界面细节上,文字按钮摆放显乱.留白不合理等. 图文教程 一.抽奖前设置 包

【译文】追求生产极简主义

翻译 :丁兴华 欢迎访问网易云社区,了解更多网易技术产品运营经验. 有报道称Kelly Johnson在冷战期间的洛克希德公司工作时,创造了KISS('keep it simple, stupid')这个原则:建议系统应该设计的尽量简单. 虽然复杂度从来不是任何项目的明智设计目的,但是它在追求新特性和新组件时会自然产生.KISS原则鼓励设计者通过制定简单的目标来主动抵抗这种诱惑,这样制造出来的产品才能保证更好的可维护性.健壮性和灵活性.比如在喷气式战斗机中,这或许意味着一架飞机可以在激战的战场上

极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 1.欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风.把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 2.精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高.不盲目浪费自己的时间与精

少即是多------------极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风. 把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高.不盲目浪费自己的时间与精力.

如何实践极简主义生活方式

极简主义生活方式,是对自身的再认识,对自由的再定义. 深入分析自己,首先了解什么对自己最重要,然后用有限的时间和精力,专注地追求,从而获得最大幸福. 放弃不能带来效用的物品,控制徒增烦恼的精神活动,简单生活,从而获得最大的精神自由. 欲望极简 了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风. 把自己的精力全部用在自己最迫切的欲望上,如提升专业素养.照顾家庭.关心朋友.追求美食等. 精神极简 了解.选择.专注于1-3项自己真正想从事的精神活动,充分学习.提高. 不盲目浪费自己的时间与精力.

极简主义(Minimalist)Web 框架大汇总

极简主义(Minimalist)Web 框架大汇总 罗列了一系列极简主义的框架(简单.轻量级),按编程语言分好类,按字母顺序排序. 列表 CSS 框架 C 写的 Web 框架 PHP 写的 数据库 框架 前端 JS 的框架 Go 写的 Web 框架 Haskell 写的 Web 框架 Java 写的 Web 框架 JavaScript 写的 Web 框架 Lua 写的 Web 框架 Node.js 写的 Web 框架 Perl 写的 Web 框架 PHP 写的 Web 框架 Python 写的

张艾迪(创始人):视觉计算极简主义的设计

AOOOiA.global创始人艾迪张:面临着新互联网的时代的到来.全球各行业对产品设计和色彩搭配上进行了新的色彩标准化.就想人们喜欢Apple的黑与白.喜欢AOOOiA.Global/224 的赤橙黄绿青蓝紫的鲜亮的色彩世界一样;不同忽视的是.更明亮.更清晰.更拟真化的视觉体验与视觉计算中.每一帧的色彩.每一帧的画质.都将更加标志性的展现与运用在各个领域与产品之中:全球市场喜欢不断的跟随市场色彩的变化.而忽略了真实化色彩世界的本真进化::让我们随着色彩进化论从回到19世纪:直到19世纪.我们所

精美的极简主义的网页设计

极简主义界面设计是需要UI设计师用有限的资源来传达诠释艺术,也正因为元素的简约,也造就了它一定的独特性.就网站设计而言,极简主义的趋势看起来似乎已经巩固住了它的地位.最后,你肯定也跃跃欲试了,但是在一展身手之前,不妨从蓝蓝设计下面网站设计例子中得到启发,这些网站是极简主义在现代网页设计的代表作品. 极简主义的网站设计欣赏:http://www.lanlanwork.com/ Anonymous DesignBlvd Impress a Penguin Beatbox Academy Lorenz

JavaScript学习总结(十三)——极简主义法编写JavaScript类

前两天在网上无意中发现了一篇使用极简主义法定义JavaScript类的文章,原文链接,这个所谓的"极简主义法"我还是第一次听说,是荷兰程序员Gabor de Mooij提出来的,这种方法不使用this和prototype,代码部署起来非常简单,这大概也是它被叫做"极简主义法"的原因.下面就介绍如何使用极简主义法完成JavaScript的封装和继承 1. 封装 首先,它也是用一个对象模拟"类".在这个类里面,定义一个构造函数createNew(),