`
sg552
  • 浏览: 620083 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
47437293-94b9-3b04-9152-8971c7580049
白手起家学习使用Flex
浏览量:18709
社区版块
存档分类
最新评论

应用开源项目时,你会大肆封装,修改它吗?

阅读更多
趁着前面那位”LUCENE应用体会“,发表此帖,也是我心中压抑已久。

我觉得,对于开源项目,就是工具,大可不必用的那么复杂。

封装再封装,HACK再HACK,有什么明显的性能提升吗?某些我们作出的改进,人家作者能想不到相关方面吗?

见过有把Struts的DispatchAction 封装的面目全非的,见过有把Spring Mvc中的 controller 重写源代码的, 见过有为了实现美其名曰“权限的动态管理”把Acegi改的一塌糊涂的。最后效果怎么样?

改Struts的那个只是为了增加个log,写出的class却无法被 doclet辨认。改Spring mvc controller的那个也就是增加个log,却没有使用官方推荐的 paraMethodResolver,弄的那方法名是千奇百怪啊。至于改Acegi的那个,是我做的蠢事。人在公司,身不由己。上级要求的,于是我按照上级的思想来实现。到最后BUG 多多,诡异事件到处都是。领悟用3天,改Acegi用4天,教人使用还要2天。我自己都不知道把现在这东西是怎么用的。哎!

记得在某坛见到某前辈谈经验。他说,见过的好系统,都是设计简单的。越是经历多几个项目,我就越身有体会。

菜鸟刚飞,说的漏洞很多,请各位朋友多多指教!
分享到:
评论
25 楼 ken1984 2007-06-14  
STRUTS,HIBERNATE这些太重了,很多东西不需要的,如果能自己去繁就简就最好了,当然自己写一个更牛。
24 楼 jason823 2007-06-14  
比较好的开源框架,可以用Plugin的方式在其上进行二次开发,这应该是最理想的情况。
23 楼 basicbest 2007-06-14  
我把Struts剥到骨头都不剩了。。。
对于某些项目,而且是大项目,Struts太复杂以至于满足不了要求。。。
22 楼 mailscheng 2007-06-14  
yananay 写道
有的时候根据业务的需要,把那些框架封装一下,就更适合新人使用了:)

项目组有些新来的做了个把月,比较简单的功能都搞出来了,但不知道为什么这么写
公司一般都会做扩展,简化开发流程
21 楼 gigix 2007-06-13  
奇怪……竟然没有人指出如此明显的一件事:
如果你需要修改开源项目,别人很可能也有同样的需要
所以你应该把你的修改贡献给开源社区
20 楼 shaucle 2007-06-13  
发现要重写时,请先再仔细考察一下项目的需求.
19 楼 topcat 2007-06-13  
感觉必要的封装还是很好的,但“大肆”........
18 楼 kamiiyu 2007-06-13  
封装不一定为了性能提升,有时候是为了方便,毕竟每个需求都不同
17 楼 imjl 2007-06-13  
开源离真正的企业应用还有很大差距,所以通常应用广泛的开源都有免费和商业两部分。

至于怎么改,具体的具体分析。


16 楼 yiding_he 2007-06-12  
非到万不得已不要去改源代码。封装则是另一回事了。为了项目使用方便和提高代码的重用,适当的封装是有必要的。
15 楼 我想我是海 2007-06-12  
重写非不得己再做。封装,带来方便的话何乐而不为?
框架毕竟是框架,有做二次开发的潜力。你做脚手架(或项目中的基础类库)的时候封装一下是很有用的。
14 楼 LucasLee 2007-06-12  
由于应用的特殊要求,对于struts的局限性做过比较深入的研究,最后用struts提供的扩展机制来解决,这样不用改动人家的代码,算是比较好的方式了.
Struts提供的扩展机制很多,基本上都在struts-config.xml配置自己的扩展类.
13 楼 xj4150 2007-06-12  
javastudy 写道
xj4150 写道
Godlikeme 写道
很多公司都有自己的框架,为了提供更好的业务需求的支持,对通用框架扩展是很必要的。
深度hack看有没有必要和自己的水平了,一般说来还是得不偿失,修改的东西没有人知道,没有经过测试,没有升级维护。

嗯,支持扩展,不支持重写。

应该可以从写的,与开闭原则不矛盾啊

呵呵,说错啦,是修改。
就想楼主说的情况,如果不对那些开源的项目有相当的了解,修改带来的后果很难想象。
12 楼 xj4150 2007-06-12  
Godlikeme 写道
很多公司都有自己的框架,为了提供更好的业务需求的支持,对通用框架扩展是很必要的。
深度hack看有没有必要和自己的水平了,一般说来还是得不偿失,修改的东西没有人知道,没有经过测试,没有升级维护。

嗯,支持扩展,不支持重写。
11 楼 Godlikeme 2007-06-12  
很多公司都有自己的框架,为了提供更好的业务需求的支持,对通用框架扩展是很必要的。
深度hack看有没有必要和自己的水平了,一般说来还是得不偿失,修改的东西没有人知道,没有经过测试,没有升级维护。
10 楼 acerge 2007-06-12  
唉,郁闷ing....
1、Struts------->myCompanyMVC,
   author--->myManager,
   package----->mycompany.mymanager.*
   helpDoc----->ask my manager .......
2、jasperReport---->myCompanyReport, ......
   helpDoc----->ask my manager .......
   ............
3、Spring JDBCTemplate-----myCompanyJDBCTemplate.......
9 楼 ahuaxuan 2007-06-12  
nihongye 写道
吹拉弹唱,各有各的演绎,有何不可

同意,为何要千篇一律呢,而且很多改动都是面向项目需要的,不是common的需求,框架当然没有办法做了。
而且大部分框架都是支持扩展的,但是扩展不是修改源码。如果是修改源码就不应该了。当是根据项目的需求来扩展这是非常正确的决策
8 楼 younggun 2007-06-12  
不太赞成直接重写源代码,一方面不利于update,另一方面由于本身设计水平或者技术上实力的缺陷,重写代码的质量也很难得到保证。
如果有需要植入功能的地方,还是觉得用AOP会比较好一些。
7 楼 阳光晒晒 2007-06-12  
sg552 写道

见过有把Struts的DispatchAction 封装的面目全非的,
见过有把Spring Mvc中的 controller 重写源代码的,
见过有为了实现美其名曰“权限的动态管理”把Acegi改的一塌糊涂的。

struts 的日志封装作过
spring 的日志用装备来作的。
Acegi  的动态管理用spring装备作的。

spring本身不要chack它的话非常的好用。。。
struts还没见过哪个公司用的是原始的dispatchAction几乎都是封装过的。
6 楼 whistler 2007-06-12  
题目中“大肆”是不是指不要随意封装,修改,而是有必要时才封装或扩展,以达到自己的需求或目的

相关推荐

    自己移植的MP4V2开源库可以直接使用代码封装H264和AAC linux.zip

    标题中的“自己移植的MP4V2开源库可以直接使用代码封装H264和AAC”表明,这是一个关于在Linux环境下,使用自移植的MP4V2库进行H264和AAC编码视频与音频封装的项目。MP4V2是一个开源的库,专门用于处理ISO基础媒体...

    c++ 开源项目

    **c++ 开源项目——深度探索Jason数据封装** 在编程世界中,C++以其高效、灵活性和面向对象的特性深受开发者喜爱。对于学习者来说,理解并掌握C++的高级特性,尤其是如何处理数据结构和接口设计,是提升技能的关键...

    开源项目-Xeoncross-macappshell.zip

    【开源项目-Xeoncross-macappshell.zip】是一个面向Mac OS X操作系统的开源项目,它的主要功能是通过一个简单的bash脚本创建一个`.app`包装器,使得Go语言编译的程序可以在Mac上以标准的Mac应用形式运行。...

    sun公司免费开源项目下载

    Sun公司,作为IT历史上的一家重要企业...通过研究C3CRM3GA.exe,我们可以深入理解Java和MySQL在实际项目中的应用,以及开源软件如何促进技术进步和创新。对于初学者和经验丰富的专业人士来说,这是一个不容错过的资源。

    Android 谷歌开源项目

    "Android 谷歌开源项目"涵盖了Android系统的各个层面,包括系统内核、框架层、应用程序接口(API)、开发工具链以及大量的开源应用程序。 1. **Android系统架构**:Android系统由五层架构组成,从低到高分别是Linux...

    开源项目-steeve-homebrew-delve.zip

    【开源项目-steeve-homebrew-delve.zip】是一个开源项目,其主要目的是为用户提供一个自定义的途径来安装和管理Delve。Delve是Go语言的一款强大的调试工具,它使得Go程序的调试过程变得更加简单和高效。在这个压缩包...

    第三方开源库的简单再封装

    "第三方开源库的简单再封装"这个主题主要探讨如何根据项目需求,对这些开源库进行适当的修改和封装,使其更好地适应我们的应用。 首先,我们来看看`net`这个目录,它可能包含了网络请求相关的代码。在Android中,...

    开源项目-IPStreet-HelloWorld.zip

    同时,开源的特性使得任何人都可以查看、学习、修改和分享这个项目,促进了技术知识的共享和进步。 总的来说,IPStreet-HelloWorld项目结合了Go语言的强大功能和开源社区的开放精神,为开发者提供了一个实战平台,...

    开源项目Auto Maker缺少的Common项目代码

    在IT行业中,开源项目扮演着至关重要的角色,它们促进了技术的共享和创新。"Auto Maker"是一个这样的项目,它提供了一套工具或者框架,可能是用于自动化制造流程、汽车设计或者其他与自动化相关的领域。然而,根据...

    VB6.0封装Excel功能区代码-开源

    "VB6.0封装Excel功能区代码-开源"项目正为此目的提供了宝贵的资源,它允许开发者通过编程方式控制Excel的功能区,增强应用程序与Excel的交互性。 首先,我们来理解“功能区”这一概念。在Excel 2007及后续版本中,...

    Java最著名的开源项目总结.pdf

    **Spring Framework** 是一个轻量级的开源框架,它的核心特性使它成为了一个强大的企业级应用程序开发工具。Spring 框架解决了 J2EE 开发中常见的问题,比如依赖管理和控制反转(Inversion of Control, IoC),以及...

    仿25ge封装的APP封装源码-可以封装安卓和IOS.zip

    在IT行业中,应用程序的封装是开发过程中的一个重要环节,它涉及到软件的打包、签名和发布。本主题聚焦于一个名为“仿25ge封装的APP封装源码-可以封装安卓和IOS”的压缩包,其中包含了用于封装Android APK和iOS描述...

    开源项目-lukechampine-httprpc.zip

    它支持任意基于文本的RPC协议,这意味着你可以将现有的RPC协议(如JSON-RPC、gRPC的protobuf等)轻松地转换为HTTP服务,而无需修改原始协议的实现。 项目结构主要包含以下几个部分: 1. **服务器端实现**:服务器...

    仿25ge封装的APP封装源码-可以封装安卓和IOS

    标题中的“仿25ge封装的APP封装源码-可以封装安卓和IOS”指的是一个开源项目,它提供了用于创建和封装Android及iOS应用的工具。这个项目可能模仿了某些特定的功能或界面设计,如25ge这样的平台,同时提供了一种...

    开源代码.rar

    首先,Apache是全球最知名的开源软件基金会之一,它维护了许多关键的开源项目,如HTTP服务器、Tomcat应用服务器、Apache Maven构建工具等。在这里提到的Apache,可能指的是其某些组件或者与Web服务相关的项目。了解...

    开源项目-tywkeene-go-fsevents.zip

    【标题】"开源项目-tywkeene-go-fsevents.zip"是一个开源项目,它主要关注的是使用Go语言实现对文件系统事件的监控。这个项目由开发者tywkeene创建,目的是提供一个简单且高效的方式来观察文件系统的变化,尤其是...

    开源项目-d4l3k-talib.zip

    【开源项目-d4l3k-talib.zip】是一个基于Go语言的开源项目,它的主要目的是为金融技术分析提供一个TA-Lib(Technical Analysis Library)的封装器。TA-Lib是一个广泛使用的库,包含了多种技术指标和分析工具,主要...

    JAVA上百实例源码以及开源项目源代码

    EJB中JNDI的使用源码例子 1个目标文件,JNDI的使用例子,有源代码,可以下载参考,JNDI的使用,初始化Context,它是连接JNDI树的起始点,查找你要的对象,打印找到的对象,关闭Context…… ftp文件传输 2个目标文件...

Global site tag (gtag.js) - Google Analytics