敏捷开发一千零一问系列之二十二: UI设计怎么做到敏捷呢?(兼谈对UI热的理解)(上)

这是敏捷开发一千零一问系列的第二十二篇。(在这里提问之一之二之三问题总目录

问题

这个问题,也来自QQ群的讨论,整理一下。


问: 13:12:49 

我问一个具体问题,我做移动OA 

问题是  UI设计 怎么做到敏捷呢?  

其实就是 设计稿变化 程序老跟着变 

 

陈勇-咨询-北京 (139107533)2012-06-29 13:17:50

恩,我们团队不大,我自己一个人做了产品经理、项目经理、主程序员、UI设计……

如果分拆到比较正常的团队,产品经理和UI至少要走近一些

而且程序员要意识到,UI不是美术,甚至不是关于客户体验的,而是关于最后产品的业务使用的。怎么说呢?

一般认为,一个产品由四部分组成:Model, View, Controller, Data access就是MVCD

在D上面,基本上没什么业务,纯技术人员的。

而M和D比较复杂,程序人员常常认为M和D是程序的骨干,尤其是M,完整表达了业务逻辑,是客户最关心的。

但我们发现,在一个成熟的管理领域,比如OA,比如PM,比如乃至敏捷开发管理工具

其实各个厂商的M差别很小

比如我们说说我们自己的“火星人”,无外乎要管理用户故事,迭代,任务这些。

数据存储进去,不过是一些字段,一条记录是一个用户故事,之类的,差别很小。真正能有创新的,反而是V

问: 13:22:05
恩 对

陈勇-咨询-北京(139107533) 13:22:26
也就是:你打算让用户如何看到用户故事?他们这样看到为何会有更多价值?
这样看用户故事,是否可以提供“额外”的信息

所谓“额外”,就是在DB数据之外的。


问: 13:22:59
嗯嗯 对


陈勇-咨询-北京(139107533) 13:23:29
所有信息都放在DB里边了,为什么我们不做一个万能的“表增删改查器”让用户去看?因为V的呈现不同,人们会从中得到不同的信息。

所以,不能把V简单理解为美工,或者稍微多一点,是“用户体验”


另外一位QQ成员: 13:24:07
Domain领域驱动开发

我觉得Domain才是关键层


陈勇-咨询-北京(139107533) 13:24:31
其实,UI或者说V,是用户真正感知产品的地方,无论M做得多好,最后这一下他看不到,就全完了。

对,Domain,如果让我分,我会把Domain放在V里边,而不是放在M里边。

这个“放”,是说把思想放在里边,不是说把代码放在里边。

(待续,下篇附图


  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
JavaScript可以使用Array.sort()方法对数组进行排序。对于文数字的排序,可以先将文数字转换为阿拉伯数字进行排序,然后再转换回文数字。以下是一个示例代码: ```javascript // 文数字转换表 const chineseNum = { 零: 0, 一: 1, 二: 2, 三: 3, 四: 4, 五: 5, 六: 6, 七: 7, 八: 8, 九: 9, 十: 10, 百: 100, 千: 1000, 万: 10000, } // 将文数字转换为阿拉伯数字 function translate(chinese) { let result = 0 let unit = 1 let stack = [] for (let i = chinese.length - 1; i >= 0; i--) { const num = chineseNum[chinese[i]] if (num >= 10) { if (unit === 1) { unit = num } else { unit *= num stack.push(unit) unit = 1 } } else { result += num * unit } } result += stack.reduce((acc, val) => acc + val, 0) return result } // 将阿拉伯数字转换为文数字 function convert(number) { const units = ['', '十', '百', '千'] const digits = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'] const string = number.toString() let result = '' for (let i = string.length - 1, j = 0; i >= 0; i--, j++) { const digit = parseInt(string[i]) if (digit === 0) continue const unit = units[j % 4] const number = digits[digit] if (j > 0 && digit === 1 && number !== '一') { result = '零' + result } result = number + unit + result } return result } const chineseArr = ['五百五十', '三千零五', '二十', '一百', '一千零一', '一千零五十', '一千二百二十三'] const arabicArr = chineseArr.map(translate) const sortedArabicArr = arabicArr.sort() const sortedChineseArr = sortedArabicArr.map(convert) console.log(sortedChineseArr) // ["二十", "一百", "三千零五", "一千零一", "一千零五十", "五百五十", "一千二百二十三"] ``` 这段代码定义了两个函数:`translate`用于将文数字转换为阿拉伯数字,`convert`用于将阿拉伯数字转换为文数字。接下来创建一个包含文数字的数组`chineseArr`,使用`Array.map`方法将其每个文数字转换为阿拉伯数字,然后使用`Array.sort`方法进行排序,再将排序好的阿拉伯数字数组转换回文数字数组。最后将结果输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值