posts - 176, comments - 240, trackbacks - 0, articles - 7

结构的消解

Posted on 2007-09-02 09:45 canonical 阅读(806) 评论(3)  编辑  收藏 所属分类: 设计理论
    程序中大量的工作其实都是在定义结构以及结构之间的关系. 一般情况下我们应该识别出结构,并把它们封装到函数,对象和组件中去. 但是封装并不永远都是有利的. 将某个结构独立出来, 在某种程度上也就割裂了它和其他元素之间的关系, 这会引发结构融合的障碍, 也会造成思维上的负担. 事实上如果程序整体具有足够的可理解性和概念稳定性, 我们并不需要独立识别出什么子部分. 一个简单的例子是数组循环. 一般情况下我们应该尽量把循环查找等操作封装到函数中, 避免多重循环嵌套时产生过于复杂的代码块. 但是如果数组或者语言本身提供了each, map等函数式操作符,则这种封装需求就大大减弱了.
    随着系统结构的日益复杂化, 在系统中会积累大量的背景知识.此时当我们需要完成一个功能的的时候, 往往不再需要指定所有的信息, 而只需要指定背景知识之外的部分信息即可. 例如在界面上通过一个分页表格来显示实体列表这样一个功能, 在Witrix平台中通过模型驱动的标准页面即可自动完成. 一般的定制需求往往是过滤显示部分数据, 在表格行上增加一些操作按钮, 定制表格的表头等. Witrix平台实现这些需求并不需要封装出一个独立的表格组件, 调用它的属性修改方法等, 而是把定制部分嵌入到BizFlow的配置中, 这里并没有明确的结构界限.
  <biz id="default">
    <filter>
       <eq name="status" value="1" />
    <filter>
     <tpls>
        <tpl id="thead>
         <thead>
          <tr rowspan="2">...</tr>
          <tr>...</tr>
         </thead>
        </tpl>
        <tpl id="rowOps">
          <ui:FlatButton .../>
        </tpl>
     </tpls>
      其他与表格无关的信息
  </biz>
  注意到对于我们理解业务而言, 我们并不需要知道表格具有分页, 排序, 隔行变色等功能. 所有和业务相关的代码聚集到BizFlow文件中, 它们构成一个可以独立理解的整体, 在此过程中也通过背景知识实现了大量结构的消解.

Feedback

# re: 结构的消解  回复  更多评论   

2007-09-03 09:28 by dennis
隐隐约约,动态语言在消解结构上的具有得天独厚的优势

# dalu0756.cn网上开店系统,QQ:495198971  回复  更多评论   

2007-09-10 16:50 by pfind365
dalu0756.cn网上开店系统,QQ:495198971

无需专业知识就可以轻松管理建设自己独立的网络销售平台!

只要您会打字,就可以方便的建立自己的网上商店,开展业务!

# re: 结构的消解  回复  更多评论   

2008-06-12 14:16 by 连连看下载
结构的复杂让人头痛

只有注册用户登录后才能发表评论。


网站导航: