读书人

敏捷开发“松结对编程”系列之十六:L

发布时间: 2013-02-18 10:50:49 作者: rapoo

敏捷开发“松结对编程”系列之十六:L型代码结构(编程篇之二)(上)

本文是“松结对编程”系列的第十六篇。(松结对编程栏目目录)

今天正好要复用一段框架(asp.net MVC3,服用范围包括Controller和View),把过程记录一下。

与复用一般的过程相比,L型代码结构有这么几个特点:

1. 如果复用有难度,在复用之前,一般不刻意形成“可复用代码”。顺便就能写成函数的例外。

2. 从第二次复用的时候,就形成复用代码。

这个听起来很容易,但要求:编写复用代码的人,就是调用复用代码的人,否则他不知道是否会复用,以及复用到第几次了。换言之,不要安排人刻意编写复用代码,否则很容易还没人用,或只用一次,就费劲写了一个可复用代码;又很容易大家一直在重复的东西,他却不知道。如果能一边编写上层应用知道使用的实际情况,一边编写底层可复用库,就能避免这种情况。

业务需求现在需要编写一个对产品线下的产品进行“增删改查”操作的业务。想象中的界面如下(实际是完成后的截图):敏捷开发“松结对编程”系列之十六:L型代码结构(编程篇之二)(下)
想到之前曾经编写过一个为部门下的团队进行“增删改查”操作的业务,界面大致如下:敏捷开发“松结对编程”系列之十六:L型代码结构(编程篇之二)(下)

决定借用这个页面,顺带把代码也全部借用了(除了里边不显示人员列表外,几乎没有区别),而且这两个东西的基类还是相同的(这一点很重要),分别是

Product : Item(父子关系项) : UDCable(可自定义字段的)

Department: Item(父子关系项) : UDCable(可自定义字段的)

注意下面代码中的Program(部门)和Team(团队,隶属于部门)基类都是Department。

原来Teams的处理代码如下:


4. 用这个框架实现Product的页面:

C#代码就一行,在ProductsController.cs里边:

        public ActionResult Index(int? productLineID)        {            return MFCDefaultView(productLineID ?? _repMFC.ReadAllItems<ProductLine>().First(i => i.Type == ItemWhattype.ProductTypeProductLine).ID);        }

View只有一个,就是体现Team和Product中间显示不同的部分,下一篇再写。

残留问题

但最后会遇到几个最关键的问题:

1. team要显示成员,product要显示别的(暂定为最近的发布Release)。

Index实际上不知道这件事情,因为它只收到了Item,这个基类中并没有成员或发布Release的信息。

2. 新建好team要转向成员分配(/TeamMembers/Index),新建好product要转向创建发布(/Products/ReleaseSchedule)。

3. 哪些Action需要写View,然后在View里边RenderAction(比如这个Teams/Index);哪些不用写View,直接在Controller的Action里边RedirectToAction到ItemsController的操作?(这样简单,连View都不用谢,但有局限就是Url会跳转)?

4. 这些编码方法与松结对编程有何关系?

这两个问题的解决,下一篇再写。

读书人网 >编程

热点推荐