开源软件设计一点感想

很久没更新博客了,打算来写一篇。写了一年多的 Telegram SMS ,收到了挺多的 Issue 我觉得还是总结一下自己的心得比较好。

任何做好单元测试和全面覆盖的人工测试

从经验来看,单元测试是非常重要的,一个程序要能够稳健的发展离不开单元测试。测试的用例我个人是比较偏向于复杂而极端的,毕竟不少错误都是因为一些极端情况没有被处理导致的,但也不要过分依赖单元测试,人工测试在每个候选版本发行前就应该开始,单元测试更多的处理一些常见的逻辑错误,以及在一些错误发生时能否正常继续工作下去。而人工测试更注重UI的体验,正常使用下功能的状态,以及整体性的体验。

不随意添加任何功能

我个人认为这个问题算是挺常见的一项,有很多功能看起来很实用,但其实随意加入项目主线,之后又疏于维护,就会导致这个功能烂尾。我个人认为与其提供不好用的功能不如不提供这个功能,毕竟很多时候我们其实也不需要那么多的功能,让项目简单一些,粗暴一些会比较好。我经常会在issue里收到不少个人需求的建议,我觉得这些建议对于个人来说是一个不错的想法。但这些功能不应该被加入项目主线,加入项目主线的应该是普适性的功能,如果需要一些私人的定制功能,我觉得开一个分支项目来处理会比较合理一些。很多项目会很快的加入某个不是很明确目的的功能,我认为这个是很不可取的,因为这样会使得这个功能进入进退两难的境地,一方面要面对需要这个功能的用户,但由于设计接口,开发瓶颈。不能很好的实现

不随意默认启动任何功能

这个观点也是和上面的相关,事实证明,随意让功能默认开启可能招致用户的反感。但有一种功能我认为是例外。就是对安全性有提升的功能,这些功能的默认开启有助于保护用户的隐私,但要注意在安全的网络环境下,应该让用户无感升级。

善于做减法

这个点我觉得算是挺多开源项目的问题吧,在同个项目中会存在一些功能相似的功能,或者提供了不少的选择给用户来选择。我个人觉得这种做法虽然提高了软件的可扩展性,但带来了接口维护的碎片化,以及用户可能没有办法在一堆选项中找到最佳实践。虽然说不少开源软件是自由的,但在于这方面设计来说,我觉得与其提供多个类似的功能,以及多种的选择,其实不如提供一个最佳实践来的好,虽然这样显得没有那么自由,有可选性。但一方面减少了开发维护的难度,另一方面也减少了用户的学习成本。同时,我认为减少一些不必要的功能,也能带来更好的体验。例如博客文章的分类功能,由于这个分类很难成一个标准。用户在写的时候需要考虑要放进什么分类,而读者在阅读的过程很大情况下都是从搜索引擎进来的,他们很可能直接进入某一篇文章,或者在首页从头看到尾。所以相对来说分类不是很重要,反而可能给使用带来麻烦。

author

qwe7002

一直很高调,其实就是个小丑。技术本就渣,还要冒充大牛。什么事情都爱多考虑三分,最后往往发现是想太多。爱好极简,但是做出来的东西往往还是差那么些。对自己的作品超级苛刻,往往最后逼死的是自己。半理工半文艺思维,至今没搞懂这是个什么玩意。一切都是浮云,欢喜就好。

本站使用Disqus评论服务,如果无法显示,请检查您的网络链接