关于Firedac的一点看法
Firedac集成在Delphi中已经有几个版本了,偶尔也拖到Form上试着用用,虽然知道Firedac有可能是最终的(或很很长时间内)数据访问技术,可一直不能接受它,其中最大的原因就是过于“复杂” -- 虽然复杂也意味着功能更强大。
就个人的感觉而言,一个好的软件系统,【基础】是好的设计,没有好的设计,意味着软件的生命不会长久,只要不是”一次性“的软件,必然会有升级和维护。
重构就是一种非常好方式,简单的来说,提炼方法,提炼类和接口等等。而针对RAD开发来说,是需要一定的“勇气”的,因为DELPHI实在是太易使用了,基本上设置一些属性,在关键的事件中写写代码就OK了。也正是太容易了,所以很多时候,基本上没有设计。
很早以前,就看到过有人说不用数据感知的组件了,很长时间里,一直觉得不用数据感知组件是本末倒置,舍近求远。(自己也增改造了不少感知控件)
随着时间流失,自己开发的软件积累了不少。每次的改动,都觉得很“烂“ (虽然技巧不少),这里的”烂“,主要是指”结构“烂了,感觉调着调着,真是伤筋动骨啊! ...省略千字...
软件的维护,绝对不是靠着修改N个属性就OK了的。依赖属性越多,就越是铁板一块。而维护的人,也不是靠组件和属性就能深刻的理解业务的,或许写“不需要注释的代码”是不易的,但这是应该追求的。现代盖个巨大的高层建筑很容易,也很快速,但这是在有图纸,有设计的前提下的。
RAD带便利的同时,让人们忽略了设计??还是人太懒了呢? Firedac功能越强大,封装的功能很多,我觉得越容易让人依赖于他的属性和功能,尤其是C/S开发上。当然并不是说这些功能不需要,但应该粒度上更细一些,或者单独封装出来,最终让开发者用组合的方式来使用。我个人喜欢dbx的原因就是非常简单,数据的处理必须要自己代码来控制,提炼数据层接口,提炼业务代码,最终用代码描述业务功能。
新的一年马上就要来临了,作为2014年最后的一点想法,感觉有些勿忙和凌乱,有如是不知所言。
关于Firedac的一点看法的更多相关文章
- 关于js的回调函数的一点看法
算了一下又有好几个月没写博客了,最近在忙公司android的项目,所以也就很少抽时间来写些东西了.刚闲下来,我就翻了翻之前看的东西.做了android之后更加感觉到手机端开发的重要性,现在做nativ ...
- 关于STM32的ST官方的库的一点看法
标题确实很别扭,因为我现在用这个库也很别扭. 在不久之前,一直有个讨论的话题:STM32开发是用库还是用寄存器? 很多人的结论是不需要讨论! 但是,今天我想说下我的看法. 首先,我还是一个菜鸟,对库对 ...
- 关于DBX Framewrok 和 FireDac 的一点随笔
DBX Framework (dbExpress Framework )用了很长的时间, 一直觉得简单好用,但今天需要连MySQL5.7, 发现已经没办法用了,感觉是时候放弃用它来作数据连接了. 以前 ...
- 关于SQLSERVER联合查询一点看法
首先看一段代码 这个数据库表我就不发了,这段代码的意思是:查询Book表中大于该类图书价格平均值的图书信息, 先看()里的内容,我一个表起了两个别名,让这个表的相同的id相等,查出平均分,然后再看() ...
- ASP.NET中数据邦定效率问题的一点看法 - 转载(自由的天空)
在 做Asp.NET开发的时候经常用到DataList.Repeater等,用这些控件的时候经常用到数据邦定,很多程序员都是按照MS提供的方 法<%#DataBinder.Eval(Contai ...
- hibernate结合使用gson转换json中一点看法
转发请注明出处:http://www.cnblogs.com/shizhongtao/p/3680216.html 在前后台的交互中,经常需要把bean对象与xml或者json,这里就把自己以前遇到的 ...
- 关于jquery ID选择器的一点看法
最近看到一道前端面试题: 请优化selector写法:$(".foo div#bar:eq(0)") 我给出的答案会是: 1. $("#bar") 2. $( ...
- yzoi1109&&viojs1042最小步数的一点看法——回文数
Description - 问题描述 有一天,雄霸传授本人风神腿法第一式:捕风捉影..............的步法(弟子一:堂主,你大喘气呀.风:你给我闭嘴.)捕风捉影的关键是换气(换不好就会大喘气 ...
- 自己对Java的一点看法
作为一个理论性比较强的学生,谈一下这段时间对java以及对程序设计的理解 java相对于其它语言有几个特点,一个是面向对象,一个是强类型 首先谈谈面向对象,关于类和对象,这个一定要 ...
随机推荐
- 解决Detected problems with API compatibility...
如果是10.3.0那么targetsdk改28.
- django面试题必问
1.谈谈你对http协议的认识. HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议.它可以使浏览器更加高效,使 ...
- Python 深度递归
class A: pass class B(A): pass class C(A): pass class D(B, C): pass class E: pass class F(D, E): pas ...
- 【Python】unittest-3
一.@unittest.skip("skipping this case") # 无条件忽略该测试方法 二.@unittest.skipIf(a > 5, "con ...
- ELF文件加载与动态链接(二)
GOT应该保存的是puts函数的绝对虚地址,这里为什么保存的却是puts@plt的第二条指令呢? 原来“解释器”将动态库载入内存后,并没有直接将函数地址更新到GOT表中,而是在函数第一次被调用时,才会 ...
- Shell #*/ 和 %/*
#!/bin/bash i="this/is/a/path.config" name=${i#*/} path=${i%/*} echo $name echo $path is/a ...
- Dij_heap__前向星。
//前向星 struct node { int nxt; int val; int lst; node () {} node (int next, int value) : nxt(next), va ...
- OpenCV 自定义任意区域形状及计算平均值 方差
opencv中有矩形的Rect函数.圆形的circl函数等,那么任意形状怎么取呢?方法1:点乘,将其形状与图像进行点乘,求其形状对应的图像形状:方法2:用findContours函数得对应的形状区域, ...
- React两三事
在setState中改变变量的状态应该用,this .state....而不是 this.props...
- transition的用法以及animation的用法
http://www.cnblogs.com/xiaohuochai/p/5347930.html transiton: 过渡属性 过渡所需要时间 过渡动画函数 过渡延迟时间: 触发过渡 单纯的代码不 ...