初衷

重构和复用是软件的一个古老话题。

在日常的软件项目开发的过程序中,如何保证团队代码的强健,同时在不断变化的需过程中最大限度的保障代码的一致性,是项目开发中的难以控制的,我们可以借助各种源码管理和标准工作流程制度和增加各种岗位人手来进行控制,但随着时间的推移,由于各种水平的开发人员,加入各种藕合的非藕合的功能,代码变得难以管理。

但市场和客户对我们的软件总是看起来让人不可理喻,当我们信心满满的把软件产品交付给我们客户时依然要应对各种指责,有的需求反复,“不,这完全没有达到我们当时的需求,和我想的不一样”,在不断的变化,不断的反复,代码被修改得面目全非,团队陷于无助之中。

从实际的管理中,我们不能完全消除代码的藕合、代码的混乱,每一个程序员心中都有自己的江湖,所谓“文无第二、武无第一”,每个程序员都会认为自己的代码是没有任何问题的。作为项目的管理者,只能最大限度的降低程序人员的人为因素来的变化,让标准化的代码在项目占有越大的份量,如果这是标准代码是由工具产生,那么在需求发生变化时,重购代码也变得非常轻松且易控。

如果在构建项目之初的与客户需求交流中,以工具来生成标准代码并因此为用户快速构建一个可见的Demo,那么项目需求就会变得更加明确、易控。尽管这与最终交付的产品还有很大的差距,但仍然可以减少客户需求的明确性。如果我们把可控代码与非控代码在生产时进行分离,那么当后期客户需求变化时,仍然可以让工具重构变化的需求。

让技术优秀的人员构建基础库,变把日常开发中用的常用功能模板化,这样,框架-工具-模板,就会在团队中成为技术、经验的容器,让再开发变得更加容易、可控、稳定。我们不需要把大把的时化在那些重复且繁重的属性代码编写,并不断的进行各种属性的拷贝,在需求变更时,又化大量时间云矫正。我们应该让更多时间去与客户交流业务需求,编写强健的应用设计上,那么我们应该使用正确的框架、同时逐渐累积可复用的功能支持库,并使功能模块低耦合,使用代码工具将各种功能调用模板化,这样不仅保证了编码上的一至性,同时最大限度降低编码的劳动强度,减少重复简单代码所消耗宝贵的时间,也能使组织和团队在协调技术的一至上化更少的时间和金钱的投入。

一个好的架构能应对不同的应用需求,但是没有一个可行的,万能的架构,不然我没在这里就不用讨论架构的问题了。这里不仅是代码的问题,随着时间的推移,各种编程技术的进步,让一些原本复杂的问题变得简单,功能更容易实现,而客户需求总是贪婪的,所要求的更加复杂,使得新的需求产生,技术实现同样的需要更多的精力和时间,就因为如此,我们不应该同时也没必要把时间和精力耗在无尽的重构中,而应该让编写代码更加工具化、模板化换个比较时尚的词,更加智能化。

ATK 系列说明

AtkFrame

  • 其核心是:Atk.DataPortal
  • 框架业务基础类型;
  • 数据门户;
  • 业务操作简化;
  • 业务操作权限的处理;

二、CodeToolSolution

实现目标:

  • 快实现基于Atk.DataPortal为基础框架的业务代码;
  • 通过自定义模板,生成非标准的业务代码

三、 SqlRepoEx

轻型的ORM处理库,基于开源的SqlRepo库的二次开发;

  • 解决前端为强类型操作,数据操作时为基本的SQL语句之间的无缝转换;
  • 减少数据层操作的复杂度;
  • 简化分布式服务时数据操作;

四、ExpressionTurn

Lambda表达式转SQL语句类库

  • 本功能类库主要提供给代码中使用Lambda表达式,后需转成SQL的条件语句这一需求;
  • 解决条件状态下Lambda拼凑条件语句;
  • 本类库不能解析Linq语句、不能解析SQL中的Select部分。但SqlRepoEx解决了这个问题

以上各库、工具会在接下的博客中进行更细仔说明。

---------------------------------------

ATK

1、一个完整支持分布式服务框架;

2、代码生成工具,可快速生成基于服务框架的应用;

3、其他支持库

4、完整代码可在GitHub的https://github.com/azthinker ;开源中国 https://gitee.com/azthinker

目标:使应用开发,低代码、高效率、快迭代

有兴趣的请在QQ群中参与讨论、联系作者  QQ群名称:ATK高效开发 ,QQ群号:747049962

也可发邮件至:azthinker@sina.com

Demo中的数据库、编译好的代码工具链接:https://pan.baidu.com/s/1B9RQm7_-SFyhLb_HLIGs0w 密码:85q6

ATK Demo使用的数据库 : https://download.csdn.net/download/xftyyyyb/10675497

ATK自动代码工具 :https://download.csdn.net/download/xftyyyyb/10675490

ATK系列库说明的更多相关文章

  1. ATK系列库介绍

    1.一个完整支持分布式服务框架: 2.代码生成工具,可快速生成基于服务框架的应用: 3.其他支持库 4.完整代码见https://github.com/azthinker 目标:使应用开发,低代码.高 ...

  2. STM32入门系列-库目录及文件介绍

    已经介绍了过了CMSIS标准,ST公司按照这个标准设计了一套基于STM32F10x的固件库,我们可以直接在ST公司的官网进行下载,现在给大家STM32最新固件库v3.5,在网盘上给大家提供了下载包,链 ...

  3. STM32入门系列-库帮助文档使用

    在前面文件夹介绍时,提到了stm32f10x_stdperiph_lib_um.chm文件,此文件是库函数使用帮助文档,可以直接打开如下图. 因为STM32库函数非常多,我们不可能把所有的外设函数都记 ...

  4. 教程:关于如何通过Maven仓库安装Spire系列的 Java产品

    Spire系列库中已发布的Java产品目前有三个,即Spire.PDF for Java.Spire.Presentation for Java.Spire.Barcode for Java.使用该J ...

  5. ATK 设计框架 之 Atk.CustomExpression

    在ATK-DataPortal框架中的xxxHandel中常用到的一种类型,形如: 1.protected virtual D ItemHandle(D item, Func<E, E> ...

  6. Cookiecutter: 更好的项目模板工具:(1)简介及可用资源汇总

    原文档地址:https://cookiecutter.readthedocs.io/en/latest/ 本系列只介绍cookiecutter的基础使用,而且会删除与功能使用无关的部分.深度使用及了解 ...

  7. 部分rpm包总结描述

    acl-2.2.51-15.el7.x86_64 Commands for Manipulating POSIX(可移植操作系统接口 of unix) Access Control Lists.有ge ...

  8. Android Support Library

    title: Android Support Library tags: Support Library,支持库 grammar_cjkRuby: true --- DATE: 2016-5-13. ...

  9. MVVM架构的一次实践,重写iOS头条客户端

    前言: 一个iOS头条APP,使用MVVM架构实现,代码中有注释,封装了AFN网络请求,解媾代码,使用起来非常方便.用最经典的TableView展示,后续不断更新,喜欢就star或fork一下,有问题 ...

随机推荐

  1. python pickle命令执行与marshal 任意代码执行

    1.python pickle反序列化漏洞 自己的理解: 由于在类的__reduce__方法中提供了我们可以自定义程序如何去解序列化的方法,因此如果应用程序接受了不可信任的序列化的数据,那么就可能导致 ...

  2. 跨页面传值2之cookie多值使用

    单值cookie结构 CookieKeyName——CookieValue CookieKeyName2——CookieValue2 ............... 通过CookieKeyName进行 ...

  3. csharp:汉字转带拼音声调

                                                                                      {                  ...

  4. SVM个人学习总结

    SVM个人学习总结 如题,本文是对SVM学习总结,主要目的是梳理SVM推导过程,以及记录一些个人理解. 1.主要参考资料 [1]Corres C. Support vector networks[J] ...

  5. ArcGIS for Server安全与LDAP配置

    ArcGIS for Server安全与LDAP配置 1.安全性概述 ArcGIS Server使用基于角色的访问控制来管理对受保护资源的访问.访问GIS资源的权限只能分配给角色.单独的用户只能通过从 ...

  6. R语言计算相关矩阵然后将计算结果输出到CSV文件

    R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...

  7. Ckrule业务规则管理系统简介

    1.   简述 Ckrule业务规则管理系统(BRMS)是一个集成的应用程序存储.管理.执行和测试的平台,允许组织定义.部署.监控和维护运营系统使用的各种复杂决策逻辑.Ckrule BRMS 独立于核 ...

  8. Apache转发到Tomcat

    #vi /etc/httpd/conf/httpd.conf 添加下面配置 NameVirtualHost *:80 <VirtualHost *:80>ProxyPreserveHost ...

  9. BIEE入门(二)物理层的定义

    使用BIEE的第一步是使用admintool去建立一个多维数据模型,而建立多维数据模型的第一步则是建立物理层,请注意因为BIEE本身并不存 储数据,所以所谓BIEE物理层的意义是需要在BIEE里建立各 ...

  10. Mantis修改“严重性”字段内容

    尝试修改Mantis提交bug时“严重性”字段的内容,将原来的内容修改为A,B,C...等级: 在mantis/config_defaults_inc.php文件中查找$g_severity_enum ...