项目任务管理(TaskMgr)设计篇
为什么使用void FilllXX(TypeA pParm1, TypeB pParm2)
应用场景色:void FillXX的好处是可以不用关心实例情况;如果在方法体中需要一个实例,而方法体只知道基类,无法提供继承类的实例,那么就需要外界出入子类的实例,来进行填充,从而实现了对某些操作的“闭”;
比如早期在DataAccesor中的:
public static BaseBizEntity FillBizDataByID(int pID, BaseBizEntity pBizEntity)
{
…
context.TryGetObjectByKey(key, out o);
Util.DataEntityToBizObjTrans((EntityObject)o,
pBizEntity
);
…
}
因为这里牵涉到将获取的Entity向业务Entity进行赋值,这个时候方法体是不知道业务实体具体类型的,无法实例化,所以只能依赖参数传递,这个就是void FillXX(TypeA pParm1, TypeB pParm2)的应用场景;
UtilLib的应用
对于高层抽象一定要封装在一起,比如基类的使用;这样最大的好处就是以后新的工程项目,子类是不相同的,相同的倒是高层抽象;比如BaseService,BaseBizEntity等等,新的项目来了,只需要把UtilLibrary加入工程,就有的框架可以遵循了。
主表和自表联动插入的方式
对于一对一的关系,外键放在任何一个表中都可以,对于一对多的情况,外键毫无疑问的应该放在从表中;对于ROMapping模式的开发,关联的处理方式,则是主表一定要先插入DB,因为需要返回主键,作为从表的外键,这里可以在程序中做一下校验,如果没有主键做外键,那么就直接抛出异常:
public void Add(BizWorkflowSequeuece pNode)
{
if (this.Id == 0)
{
throw new Exception("工作流实例为空,不能添加节点");
} pNode.WfId = this.Id;
this.nodes.Enqueue(pNode);
pNode.StepNo = this.allNodes.Count + 1;
pNode.Create();
}
日志的设计
日志一定是要讲求“一条龙”,通过日志是可以将操作的一条线体找到的;比如从创建一条任务,业务类,到保存到DB,再到创建一条工作流,保存到DB,添加到业务类;最后是添加节点,每添加一个节点就会存到DB中;一个任务的创建应该是一个主线,通过ID是可以追踪到整条线的。
枚举的滥用
首先,不要将枚举值和下拉框相关,而是最好配置DB化,并提供配置页面来进行配置;这样对于增加、减少项可以达到不修改代码即可,如果枚举和下拉直接相关:将会导致变更以来代码。
其次,枚举不要作为Entity的类型,DB的字段向Entity转化,以及做处理在页面端显示其实是一件特别扯淡的事情;
最后,要明白,枚举只是一种表达方式,一种只适用于应用层处理逻辑的直观性,便利性,但是不要将他穿插跨域方面(应用层、DB层)。
为什么消息都放在一个类中
提示消息统一放在一个类中,这就是集中效应;所有同类别的内容都放在一起,这样便于索引,便于发现类似的内容,进而加以简化,比如可以方便发现相同的消息;另外如果修改可以尽快定位到修改点。
项目任务管理(TaskMgr)设计篇的更多相关文章
- 项目结构的设计(iOS篇)
项目结构的设计(iOS篇) 本文附带源码:YoungHeart-Chapter-02.zip 在设计任何一个框架之前,都应规划好项目结构. 假定Git作为我们的项目管理工具.我们要建立两个仓库,一个用 ...
- .NET Core实战项目之CMS 第七章 设计篇-用户权限极简设计全过程
写在前面 这篇我们对用户权限进行极简设计并保留其扩展性.首先很感谢大家的阅读,前面六章我带着大家快速入门了ASP.NET Core.ASP.NET Core的启动过程源码解析及配置文件的加载过程源码解 ...
- .NET Core实战项目之CMS 第十章 设计篇-系统开发框架设计
这两天比较忙,周末也在加班,所以更新的就慢了一点,不过没关系,今天我们就进行千呼万唤的系统开发框架的设计.不知道上篇关于架构设计的文章大家有没有阅读,如果阅读后相信一定对架构设计有了更近一部的理解,如 ...
- jQuery2.x源码解析(设计篇)
jQuery2.x源码解析(构建篇) jQuery2.x源码解析(设计篇) jQuery2.x源码解析(回调篇) jQuery2.x源码解析(缓存篇) 这一篇笔者主要以设计的角度探索jQuery的源代 ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
- 《一头扎进》系列之Python+Selenium框架设计篇3- 价值好几K的框架,狼来了,狼来了....,狼没来,框架真的来了
1. 简介 前边宏哥一边一边的喊框架,就如同一边一边的喊狼来了!狼来了!.....这回是狼没有来,框架真的来了.从本文开始宏哥将会一步一步介绍,如何从无到有地创建自己的第一个自动化测试框架.这一篇,我 ...
- 《一头扎进》系列之Python+Selenium框架设计篇4- 价值好几K的框架,呵!这个框架有点意思啊
1.简介 前面文章,我们实现了框架的一部分功能,包括日志类和浏览器引擎类的封装,今天我们继续封装一个基类和介绍如何实现POM.关于基类,是这样定义的:把一些常见的页面操作的selenium封装到bas ...
- 《一头扎进》系列之Python+Selenium框架设计篇5 - 价值好几K的框架,哎呦!这个框架还真有点料啊!!!
1. 简介 其实,到前面这一篇文章,简单的Python+Selenium自动化测试框架就已经算实现了.接下来的主要是介绍,unittest管理脚本,如何如何加载执行脚本,再就是采用第三方插件,实现输出 ...
- 《手把手教你》系列基础篇(九十六)-java+ selenium自动化测试-框架之设计篇-跨浏览器(详解教程)
1.简介 从这一篇开始介绍和分享Java+Selenium+POM的简单自动化测试框架设计.第一个设计点,就是支持跨浏览器测试. 宏哥自己认为的支持跨浏览器测试就是:同一个测试用例,支持用不同浏览器去 ...
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
随机推荐
- 自己动手画一个HTML5的按钮
<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...
- Windows版本搭建安装React Native环境配置及相关问题
此文档整理参考地址: http://www.lcode.org/%E5%8F%B2%E4%B8%8A%E6%9C%80%E8%AF%A6%E7%BB%86windows%E7%89%88%E6%9C% ...
- C#系列之值类型和引用类型
前言 这几天一直在思考这章讨论什么, 在上一章讨论string的时候牵涉到引用类型,那么我们这一章讨论讨论一下,值类型和引用类型. 值类型和引用类型,它们的区别来源于传值方式.有人会认为值类型就存在栈 ...
- android 46 service
service是安卓四大组建之一,service只能系统创建不能new,service也要在项目清单中注册说明,service分为2中,一种是系统级的服务,一种是我们自己写的服务. 启动和关闭serv ...
- malloc 与 free 图
- iOS-UIControls介绍
iOS-UIControls类介绍 UIControl的继承关系 UIControl是 UIKit中UISwitch(开关).UIButton(按钮).UISegmentedControl(分段控件) ...
- Android 使用Android Studio + Gradle 或 命令行 进行apk签名打包
官方文档:https://developer.Android.com/tools/publishing/app-signing.html 1. 默认为debug mode,使用的签名文件在: $HOM ...
- Array,ArrayList 和 List<T>的选择和性能比较.
Array Class Provides methods for creating, manipulating, searching, and sorting arrays, thereby serv ...
- windows服务,安装、启动、停止,配置,一个批处理文件搞定
相对而言,还是比较通用的吧,如果哪位仁兄有更好的实现方式,或者发现有不足之处,还请多多指教. @echo off echo.------------------------------------- ...
- ASP.NET mvc 遇见的问题
1.数据库配置 The specified named connection is either not found in the configuration, not intended to be ...