其实这种事情都会有两个观点。
一个观点是:建议使用自己熟悉的技术,采用简单的架构去实现项目,等到你把项目做出来了,能用起来了,客户认可了。以后的升级,那是你就可以比较轻松的采用其 它的架构来重构,这样你的风险,压力就相对减少很多了。
而这回,我想顶一下第二个观点:
其实如果你对代码要求比较严格的话,你就会经常发现,你的代码有很多东西可以抽取出来,或者做在公共的模块,或者作为框架的底层,我们就简单的拿jdbc来说吧,
首先,是connection的管理,这点一般用jdbc熟一些的话,都会有管理connection的公共模块,虽然偶尔会碰到性能的问题,但是这点我们暂且压下不表。
我们查询的时候,每次都要用
rs.get...("name"),
rs.get...("id"),
rs.get...("age"),
rs.get...("gender"),
rs.get...("hobby"),
然后修改数据库的时候,还要拼写update语句跟insert语句,经常还要费很多时间来调试这些多余代码的问题,这时候你就想,不行,我一定要写一个公共模块,省得让我每次都要定这么多代码,于是你的第一个公共模块产生了,然后测试啊测试,改进啊改进,叮叮响,过了几天时间的考验,这个公共模块终于可以放心使用了,项目进度开始快一些了,总算不用再拼SQL了。
后来在做统计模块的时候,突然又发现,之前在用到的一些SQL函数,好像在客户要求的数据库上不怎么行啊,于是又去查了一下资料,又过了几天(可能这次不用几天),然后终于放心,所有的函数都正常了。
接着又不可避免的碰到了分页的问题,你对自己说,不用怕,我上回就写了一个分页的,没有问题!可是Ya的你突然发现,上回的那个分页是用游标实现的,这回客户是要求用SQLServer,唉,SQLServer的游标,不提也罢,想来想去,只好自己拼SQL语句来写分页了,又是count又是top,测了又测之后,又过了几天,啊哈,终于分页的公共模块也做好的,可以放心使用了,好,项目的进度又可以加快了。
做着做着的时候,发现,咦,好像这表得增加一个字段才行,增加了,然后所有查询的SQL语句加一下,所有insert跟update的代码修改一下,页面修改一下,嗯,现在应该正常了,看起来倒是没什么问题,咦,报表好像不怎么对啊,靠,这边还有调用这个表的代码,妈的,改吧改吧。磨蹭了好几个小时(当然,熟练的话,并不用几个小时),总算看起来都正常了。
这一回,这个功能中有一次用户请求,访问了好几次数据库,不行,这里应该用个cache,否则性能上会有问题啊,算了,用算法解决一下,尽量少访问数据库好了,我对cache还不熟呢。(写啊写啊,Batch Size,这样多,那样多,Fetch Size。。。,终于,看起来正常一些了)。过了一段时间,靠,这边又要访问好几次数据库,Ya的受不鸟了,性能爱咋的咋的,反正一个地方慢又不要紧。Oh !!!这边也是好几次,这边又是好几次,那边又是好几次。不行了,我老老实实写个cache支持吧,于是又叮叮当当了好几天,终于,有个粗糙的cache出来了,终于速度可以看一些了。后来改进又改进,测试又测试,累死了,老子好不爽啊。
好像天下有点太平了,啊,你说我这个地方忘记更新你增加的那个子表啊,算了,没关系,我明天看一下代码,这个容易解决点。嗯,我改了那边的代码了,会更新子表信息了。什么?你说取主表的记录跟相应的子表记录列表麻烦啊,没关系,我更新一下处理resultset的公共模块,明天再说。
Oh ......对这样子复杂的查询好像现在的公共模块支持不了啊,算了,这样子的查询不要用这个公共模块,我们手动写一些代码好啊,别跟我讲这样代码结构很难看,你以为我不知道啊,TMD。
TMD的,怎么这边的SQL老是运行不了啊,不会是分页底层模块的问题吧,靠,怎么你的SQL语句有这么多order,group by,靠,还有top啊,这当然过不了了,不要吵了,现在时间改,不理它,直接用个假分页就行了。你又说代码结构难看,小心我抽你哦。
公司新来一个程序员,看了几天代码,不停的抱怨说,这代码写得真差啊。。。。。。
分享到:
相关推荐
"第三方开源框架"这一主题涵盖了广泛的知识点,包括但不限于框架的选择、使用方法、许可证合规性、社区支持以及集成到项目中的最佳实践。 首先,我们来理解什么是开源框架。开源框架是一种软件开发工具,它提供了...
本文将重点讨论在"WEB项目开源框架选择"上的考量因素和具体建议。 首先,我们要考虑框架的几个关键特性:开发效率、功能覆盖、性能表现、学习曲线以及框架间的兼容性。例如,持久层框架的选择,Hibernate是一个流行...
### 基于Devexpress的WinForm开源框架知识点解析 #### 一、DevExpress与WinForms简介 DevExpress是一家专注于为.NET平台提供高质量控件组件的软件公司。DevExpress的产品因其丰富的功能、出色的性能以及良好的用户...
SSH是Java开发中广泛使用的三大开源框架,包括Struts2、Hibernate和Spring。这三大框架在Web应用开发中各自承担着不同的职责,协同工作以提高开发效率和代码质量。 Struts2是MVC(Model-View-Controller)设计模式...
Unigui是一个强大的开源框架,特别适用于开发基于Web的客户端应用程序。这个框架是用Delphi语言编写的,它提供了一种高效的方式,让开发者能够利用Delphi的强大功能来构建BS(Browser-Server)架构的应用程序。...
在本资源"开源框架实例使用一高仿丁香医生的界面.rar"中,我们...通过研究这个高仿丁香医生界面的案例,开发者不仅可以学习到具体的编程技术,还能了解到如何将开源框架应用于实际项目中,从而提升自己的综合开发能力。
.NET P2P下载开源框架,如Monotorrent,是一种基于BitTorrent协议的网络技术实现,用于高效、分发大量数据的工具。P2P(Peer-to-Peer)下载技术允许用户之间直接交换文件,减轻了服务器的压力,尤其在处理大型文件如...
ASP.NET MVC(Model-View-Controller)是微软提供的一款用于构建Web应用程序的开源框架,它基于模式驱动的架构,允许开发者在模型、视图和控制器之间实现松散耦合。该框架提供了高度的可测试性、灵活的URL路由、以及...
使用这个开源框架,开发者需要熟悉OM DM协议的相关规范,理解对象模型和管理操作的实现细节。同时,将框架集成到实际设备或应用程序中,可能涉及与硬件驱动、操作系统接口的交互,以及网络通信的实现。此外,开发者...
CSP(Cryptographic Service Provider)开源框架是用于提供加密服务的软件组件,它与操作系统紧密集成,为应用程序提供加密、签名、哈希等密码学功能。CSP 11 版本是该框架的一个更新迭代,它引入了PKCS #11标准的...
本文将基于提供的部分开源框架资源,详细阐述这些框架的特点、功能及其在实际项目中的应用价值。 #### 1. Play Framework 2.0 Final **下载链接**: [http://download.playframework.org/releases/play-2.0.zip]...
Laya前端开源框架是一款基于Laya技术的前端开发框架,旨在提供高效、易用的2D和3D游戏以及互动应用开发解决方案。Laya是一个跨平台的JavaScript库,支持WebGL,HTML5 Canvas以及Flash,使得开发者能够在浏览器环境中...
这些角色在开源软件项目的成功中起着至关重要的作用。 1. **软件架构师**: - **职责**:软件架构师负责整体系统的架构设计,包括概要设计和详细设计,数据模型设计与数据库设计,指导开发人员编码,以及核心框架...
作为一个通用的开源框架,ASP.NET 支持多种编程语言,如C#、VB.NET等,并且在GitHub上公开源代码,允许开发者自由地使用、修改和分发。 ASP.NET 框架的核心特性包括: 1. **页面生命周期管理**:ASP.NET 提供了...
### 日本最新开源框架SAStruts简介 #### 一、SAStruts概述 SAStruts是日本最新推出的开源框架之一,它基于无设定Struts构建而成。无设定Struts指的是在传统Struts基础上进行了一系列简化设计,使得开发者能够更...
打开这个文件,开发者可以查看完整的项目结构,运行应用以体验图片选择器的实际效果,并从中学习如何在自己的项目中引入和使用这个组件。 总结来说,"基于开源框架简单好用的仿微信图片选择器"是一个旨在提供高效、...
【AspxCn无刷新整合型网站开源框架】是一个基于VS2005+C#+ASP.NET开发的高效网站开发框架,充分利用了AJAX技术来实现网页的无刷新更新功能,从而提供用户更流畅的交互体验。这个框架适用于构建企业级网站,同时也...
在选择这些开源项目时,开发者应考虑项目的需求、团队熟悉度和技术生态。例如,Spring因其模块化和广泛的社区支持,常被选作核心框架。Hibernate和iBATIS则根据对SQL控制的需求来决定。视图层的选择则根据项目是否...