项目所得:一个非典型性改动带来的思考(三) 之项目设计

上篇 中描述了针对第一个问题的思考, 在写的过程中几个关键词逐渐引起了我的注意, 本篇就让它们登台吧 , 它们是: 现在项目的套路及缺点, 数据库实现业务逻辑, 程序设计的美.

先看第一个, 即现在项目的套路及缺点.

虽说现在所项目还是不很多, 但对项目所用架构和技术还是有一定了解的. 现在是B/S流行的时代,我们这里 也只讨论Java实现B/S可选择的技术. 项目大都有三层, 也可以说五层. 三层是纯Java的三层, 五层是包括了数 据库和HTML_CSS_JavaScript后的说法. 这里不防采用五层的说法. 这样的分层大都有很多的框架可选(数据库和 HTML除外), 而项目中大多也都是基于这样的分层围绕着数据的CRUD实现些基本功能.

这样做的好处显而易见, 可以把别人写的框架拿来就用, 从而极大地提高开发效率. 一个Java程序员把这些 层上常用的技术掌握住,一般的工作也就可以胜任了.

但这样的项目做着做着就会慢慢发现, 似乎还缺点什么东西, 也不够过瘾. 一些很吸引人的概念和技术自己 很少用到: OOP,AOP, 接口设计,WebService.....

在这样用框架的思维主导下, 项目有些惨不忍睹了: 方法实现上以copy/paste为主, 方法调用的"私拉乱接", 方法很是变异的传参方式... 这样的项目一下子脆弱了,谁也不敢碰了, 好像一碰就瘫掉一样.而业务上的一点改 动,在代码上的变更费老劲了.

这显然不是我们要的结果.

接着看第二个, 数据库实现业务逻辑.

现在这个问题,我又想了这个话题.以前也多多少少地想过. 为什么这样的方法不行? 也没有系统地想过. 现 在把一些零星的想法写在这里跟大家讨论,其实这是个很古拉很过时的话题了吧.

以下是现在能想到的一些因素, 但也不是很明确, 也不知具体每一个占多大比例:

1, 没法用OO的概念. 好像并不是很有说服力, 最典型的反倒是C, 它也没有什么OO的意思吧, 但可以想像,C 做的项目也是很辉煌的.

2, 与具体的数据库绑死了. 一般来说,一个项目很少在换数据库吧? 不过这个因素像jBPM这样的中间件得考 虑的.

3, 人们喜欢了用具体的编程语言来实现业务逻辑. 这是一种可能, 毕竟并不是所有的程序都是有很丰富的数 据的, 这样由于习惯就直接导致了在一些用数据库的项目中也不用数据库来实现业务逻辑? 有些荒谬!

4, 由于数据库的局限性,一些专门的编程语言更能胜任业务逻辑的实现. 但这个局限性又具体表现在哪? 具 体编程语言的优越又体现在哪?

最后看第三个, 程序设计的美.

应该说这个我现在写的最心虚, 自己也没参与过设计优良的项目开发,这里只能从反面来管窥下美的体 现.

1, 程序应该运行正确. 这是最起码的要求, 或者说不算要求的要求.

2, 程序应该便于维护. 这个涉及的面太广, 再往下分应该有: 处理代码重用, 减少功能调用的私拉乱接, 代 码本身的可读性应该高些, 低耦合以便于业务逻辑的扩展, 组件化地可插拔....

3, 程序运行效率应该高些. 这是性能上的要求了, 现在体会的还不深.

但要想达到设计优良是有代价的, 是要投入巨大的人力物力财力的, 这样一般的项目也招架不住, 于是我们 要感谢那些开源框架的伟大了.

写到这里, 想到大名鼎鼎的<人月神话>了.

这篇写的有些远了, 不过还是在引发思考范围内的, 下篇将回到主题.

时间: 2024-11-02 03:38:06

项目所得:一个非典型性改动带来的思考(三) 之项目设计的相关文章

项目所得:一个非典型性改动带来的思考(一) 之问题引入

引言: 这些天项目中做了一个改动, 为了后续行文方便,我们给这个改动起个绰号,称之为"非典型改动". 围绕这个改动,我想了很多, 几乎贯穿了整个项目所用的技术. 现在我想整理下来,作为以后的一个参考, (不敢写"若对别人有所帮助我也甚感欣慰"这样的话了, 因为这些天写博客写的有些伤心, :-) ). ---------------------------------------- 这是一个真实的故事. 事情是这样的. 项目中的一个类,对这个类中一属性的判断规则是在代

项目所得:一个非典型性改动带来的思考(二) 之对第一个问题的思考

上篇 里以一个简化的例子把问题描述了下, 这里将当时引发的思考记录下来. 1, 接口配以不同的实现, 好像设计模式里有这么一个叫"策略"模式的. 大致想法是这样的, 定义一个名为 CriteriaProvider的接口, 接口可以写以这样: Java代码 public interface CriteriaProvider{ boolean isPass(Student student); } 再依两套标准做不同的实现. 这样是可以解决在项目里调用的问题, 但由于原有判断在代码中很多分散

sencha touch-如何把一个非sencha architect构建的应用改写为architect构建的应用

问题描述 如何把一个非sencha architect构建的应用改写为architect构建的应用 现在有一个用sencha touch 写 的应用 ,可是由于开始用architect开发,只好把原有项目改写为architect形式的,由于对architect不熟悉,希望谁能给指点下 解决方案 同求啊,没有人遇到过么

如何扩展ArchiMate元模型来构建一个非功能性的模型扩展

本文展示如何扩展 ArchiMate 元模型来构建一个非功能性的模型扩展,可以从业务架构扩展到http://www.aliyun.com/zixun/aggregation/9942.html">技术架构.本文还提供了一个简单定制的下载,使您可以在 Rational System Architect 中使用新的元模型扩展. 本文主要关注 IT 系统非功能性方面的图形和形式表示,我们以非功能性需求(NFR)开始,因为这些表示是由架构师执行的. 在展示一些可用符号以及如何在 The Open

ERP项目是一个改革企业管理模式的项目!

对于ERP实施与运用的十二个重要观念,我们前面已经讲了两个,第一个是,要想把ERP实施好用好,企业员工一定要有全局思维,第二个是,ERP项目不是一个传统IT管理软件项目.那么ERP项目应该是一个什么项目呢?这就是本文要强调的第三个观念,即ERP项目是一个改革企业管理模式的项目. 对于管理模式的定义,从不同的角度会有不同的理解.比如做精益生产的,会有精益生产的管理模式,做六西格玛的,会有六西格玛的管理模式,做全面质量管理的,会有全面质量管理的管理模式,这里我们要站在ERP的角度来理解管理模式. 简

一个文章页如何带来一百多的流量

一个文章页如何带来一百多的流量?怎么样才可以让一个文章页带来一百多的流量呢?有人可能说找一百多个好友点击,这也算是一种办法吧.除了这些肯定有其他的方法咯,就是把这个文章页做到百度的首页,也不是把任何一个文章页做到首页都会有带来一百多的流量的,必选要选好关键词的,下面看一幅图:   看这第一幅图,站长工具显示权重为2,预计百度流量为181,"甲亢是怎么引起的"这个文章页排名为第三,这个关键词的百度指数为726.还有4个有指数的词都没在首页.可以说网站的流量基本上来自于这个文章页的.那么文

maven-Maven如何实现把两个项目打成一个jar包

问题描述 Maven如何实现把两个项目打成一个jar包 最近在研究maven,但是一直有个问题困扰着我,怎么把两个Maven项目打成一个jar包,求告知 解决方案 首先你的项目需要是Maven类型的项目,不是的话需要转成Maven类型的,然后在项目上单击右键,如下图:

正则表达式 匹配至少有一个非空白字符并且不超过指定长度_正则表达式

chinmo 逆向思维解决方案 复制代码 代码如下: <script type="text/javascript"> /** * 至少有一个非空白字符并且不超过6个字符的正则表达式 * * 作者:chinmo * 整理:http://www.CodeBit.cn * 来源:http://topic.csdn.net/u/20090207/18/ffa003ed-ecd4-40e0-b81f-36aa1fe46d85.html#r_55136904 */ var patter

现在项目中有一个这样的需求需要实现这样的窗口,选择多种数据,请问谁有这样的源码。

问题描述 现在项目中有一个这样的需求需要实现这样的窗口,选择多种数据,请问谁有这样的源码. 解决方案 直接用cfiledialog(C++)或者openfiledialog(C#)等. 也可以用toolbar listview combobox button等组合.