文档即编码(三):信息树(二)

本文档介绍了信息树的概念及其在编码中的应用,强调信息树能提高开发人员、业务人员和测试人员的沟通效率,保持文档与代码一致性。文中通过订购流程的示例,详细阐述了信息树如何解决逻辑判断、赋值和计算问题,并通过XML配置展示了如何实现业务建模和数据操作。此外,提到了一个名为doc-eq-code-Dgremlin的项目,作为实现信息树理念的工具,该工具简化了数据流向的管理和代码更新,适用于单个业务请求的读写操作。
摘要由CSDN通过智能技术生成

  在上一章中,简单提出了信息树的概念,可能大家都有了初步的概念,本章将会根据上一章的实例进行扩展,并通过实践的代码示例说明如何运用信息树。

 

   在<<代码大全2>>中,作者认为程序编码是整个系统开发中最不可或缺的环节,可以没有需求分析、设计、测试,但不能没有程序编码,因为如缺少这一环节,则无交付物,反之亦可。

 

   故本人认为,系统的开发应以开发为核心,即把开发人员当成需求方,而需求分析、设计、测试只是为开发提供一系列的服务,为其保证开发质量。

 

   那么从开发人员角度出发,他们希望获得什么才能编写出高质量的代码呢?本人认为编码基本可以归结为三类:逻辑判断、赋值、计算,以下将分别说明:

   

(1)    逻辑判断

在代码中主要通过if语句进行判断,即根据其判断条件和结果,进行相应的逻辑处理,

其分为静态、动态判断,静态判断为通过已保存的状态(如status状态)进行判断,而动态判断包含一定的实时计算,如超时、订购量、可支付金额等

 

(2)    赋值

即数据如何从web、app端传输到业务层,再从业务层传输到数据层,反之亦从数据层->业务层->web、app,由于其涉及多层、多业务,故其在整个编码过程中可以说是最繁杂的地方

 

(3)    计算

其实逻辑判断、赋值、计算,此三者是互相嵌套的,这里的计算只是相较于逻辑判断、赋值来说,较复杂的逻辑,这也是较难处理的地方

 

         而在信息树中,可一次解决以上三个问题(对于计算问题,可能目前解决方式较单一),且最大的好处在于,可提高业务人员、开发、测试的沟通效率,做到文档即编码,保持文档与代码的一致性,且其可高效扩展,做到修改文档即修改代码。

 

         下面我在将上一章的信息树进行扩展,并进行讲解,如下图:


在上图中,为订购的一个简易流程,简单说明了逻辑判断、赋值,并对其进行了相应抽象,且可便于今后的扩展,下面为大家详细解释。

 

(1)    首先会有一个“订购新增信息”,其“consume”为业务执行的前置条件,如满足则进行生产,但此处的生产只是原材料的生产,生产完后发起通知

(2)    其“订购成功信息”如收到其“订购新增信息”已生产完毕的通知,则进行生产,

而“Set”为产品的标记(此处为静态判断,动态判断在之后的章节会进行讲述),通过此标记可识别此产品,而“Save”则表示生产完成后入库。

(3)    而“订购有效信息”可以认为是“订购成功信息”的包装,就像是给已生产的产品进行包装,已便于销售

 

在此需特殊说明的是,其“订购新增信息”与“订购有效信息”,对“订购成功信息”进行了封装,以便于进行扩展,假如今后如业务发生变化,比如其“订购有效信息”为订购成功且支付成功,则可进行相应简单修改即可。

 

而如果在“订购新增信息”后,有新的状态加入,也只需简单修改就可进行扩展,并且此图可同时供业务、开发、测试阅读,统一其沟通语言。

 

需要注意的是,此处有一个难点,即对每个信息的业务定义,即类似于Restful中的资源。如“订购有效信息”的业务定义是什么,一旦定义完成就不可改变,如有新的业务定义,应新增相应的信息进行匹配。

 

另其所消费的信息,应是业务抽象化的信息(原材料除外),这样便于扩展,且可进行信息叠加。

 

以下将以代码方式,说明如何实现以上信息操作,由于代码示例较复杂,故分为两阶段描述,此章先对“赋值”进行描述,而下章则会加入“逻辑判断”(包括静态与动态),以下代码基于个人所写的doc-eq-code-Dgremlin项目,具体地址为:https://github.com/szlwin/doc-eq-code-Dgremlin

 

首先我们进行业务建模,具体如下:

 

用户信息(User.xml):

<?xml version="1.0" encoding="utf-8"?>
<orm--data-mapping>
         <dataname="user">
                   <property-info>
                            <propertyname="id" type="int"/>
                            <propertyname="uidd" type="string"/>
                            <propertyname="uid" type="string"/>
                            <propertyname="name" type="string"/>
                            <propertyname="activeTime" type="date"/>
                            <propertyname="status" type="int"/>
                            <propertyname="password" type="string"/>
                   </property-info>
                   <table-info>
                            <tablename="userInfo" data-source="data1" key="u_id"key-type="increment">
                                     <columnname="u_id" ref-property="id" type=""/>
                                     <columnname="u_name" ref-property="name"/>
                                     <columnname="u_password" ref-property="password"/>
                            </table>
                            <tablename="userInfo" data-source=
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值