开通VIP,畅享免费电子书等14项超值服
首页
好书
留言交流
下载APP
联系客服
2013.05.09
回到主题,简单设计英语 Keep It Simple, Stupid。我们常说的KISS原则,保持产品或设计的简单性,同时功能的足够性。我想说的是翻译成为简单这是一个错误的决定,因为这不是绝对的简单,在我看来最简单的系统就是没代码的系统,代码越少,甚至没有就没有bug没有维护。所以我更愿意以产品设计如家庭装修一样翻译为”简约”,简约而不简单。在《简约至上-软件交互式设计四策略》这本书以遥控器为例提供了删除,隐藏,转移,组织产品设计四策略,但是其简化改善后仍然五脏俱在,核心价值仍在。但是对于软件而言,我们最大对手是需求变化,所以我们常说“拥抱变化”,敏捷就是为了拥抱变化适应变化给用户提供更好优质可用的卓越软件。但真的所谓简单设计,我们起初就不设计?靠我们的测试驱动,行为驱动,重构等方法论就能解决软件设计?这些就是万能的灵药,软件的银弹?我还没见过这样的人,我不否认在这样牛人的存在, Martin Fowler 在《重构改善既有代码设计》一书提到XP发起一帮人能够比较好的完美利用这些方法论将代码改造为一个比较好的设计。但这毕竟是少数人的世界,我辈望山莫及,再加上项目开发周期中的由于时间,环境等等压力导致重构力度大幅度缩减,或者根本就没有把重构日常化,只是拿着重构这个感觉好nb的术语招摇撞骗(本人见过很多人或者博客将如果重构,但在鄙人鄙见下这更大程度的是重写,重新设计,只是招摇撞骗的幌子),那所谓的简单设计真的还能启用?
在回到简单设计,在软件变化的需求下,我认为简单设计的目的是保持代码的整洁,以及不要花费太多时间在无谓的设计猜测需求中,减少类数量的庞大,其目的是减少时间人力资源的浪费,其相对于过度设计而言。但绝对不是不做设计,不留任何一点扩展,起终点在于时间资源的投入。所以我认为基于资源的投入,如果不是那么大浪费或者必须的设计,我们让然需要去做,因为程序员都是追求完美,适应以后潜在的变化。相反如果是将一个相对好的设计,或者扩展,花时间去做到所谓的简单设计,丧失扩展等,这不是减少资源投入,这是在捣蛋,花时间精力去搞破坏,即使是你认为不变,何况谁能预测未来世界。
如果我们不是牛人,你却也追求卓越软件,我觉得我们还是需要考虑下设计,不要一味的“简单设计”,平衡各种方法论,权衡各种利弊,找到适合自己的方式方法论,如果只是”简单设计“却没有足够的重构力度,抑或完全的优先设计,不进行不断的持续改进,逐步细化,做到“简约而不简单”记住所有的技术债早晚会需要你偿还的。对于我来说没有万能的方法论,我也不是牛人,我选择设计,重构等方法论的权衡。
微信登录中...请勿关闭此页面