scud(飞云小侠) 2005-7-23
http://www.jscud.com 转载请注明作者
【MVC,MVC2,WEB设计编程的分层】
请阅读文章 http://forum.javaeye.com/viewtopic.php?t=11712&postdays=0&postorder=asc&start=0
【可扩展不等于功能强大,不要夸大其辞】
现在的系统,因为接口或者其他方法的使用,都具有很大的扩展性.但是扩展性不等于功能强大.
存在一个接口,用户可以实现自己的接口,确实非常方便.但是如果你的系统本身只实现了一个接口或者根本没有实现,那么对用户来说就谈不上方便.
例如WebWork的validators,本身是一个接口,但是实际上本身实现的具体类很少,而且功能很差,这个时候如果你说WebWork的校验器很厉害,那么就可能不太恰当了.当然扩展Webwork的Validator还是非常方便的.
当然,可扩展性还是需要的,但是不要吹嘘,在这个浮躁的年代,让我们多干点实事. :)
【20/80原则】
在工作中,我经常想到20/80原则,也就是"巴雷多原则".例如我们可以看到:
时间:我们20%的时间会产生成果的80%
产品:产品的20%带来利润的80%
阅读:20%的书篇幅包括了内容的80%
工作:20%的工作给我们80%的满意
演讲:20%的演讲产生影响的80%
领导:20%的人作出80%的决定
从上面可以看出,很多时候它都很有说服力.
在这里我想提到几点,但是和上面的可能出发点有所不同:
1.程序的80%都是在处理特殊情况,所以我们一定要对特殊情况重视,不要因为是特殊情况,就不很重视.80%的客户对特殊情况都很重视.
文档对特殊情况也要详细描述,因为开发人员80%的时候在查找这些东西,而对那些经常用到的用法却很少查阅文档.
2.优化问题:80%的瓶颈都出在20%的代码上,所以在优化代码的时候不需要优化所有代码,只需要优化20%的关键代码就够了.当然追求完美的人我们就不多说了.
记得有一条优化的原则是"不要优化!不要优化",是非常有道理的.
3.如果你20%的事情做砸了,往往会导致80%的事情都砸了,或者是导致别人认为你把事情几乎都做砸了.
如果你对一些事情发表了一些很不严谨的看法,那么别人会认为你在别的事情上也很不严谨.
依此类推,代码质量,文档完整性等等,都会让人产生类似的推理.
(当然一个代码写的很乱的人,往往文档也很乱.)
【强制绑定是不受欢迎的】
不要在程序中强制绑定一些额外的功能.
有的框架往往功能很多,是"大型计算机",有很多功能,但是在我需要打字的时候,给我打字的功能即可,不要强制我使用网络功能,打印功能,负载均衡功能等等.
一般来说,如果一个东西有很多功能,那么做好做成可配置,可插拔的,这样用户使用你的东西,没必要在不使用高级功能的时候,浪费用户的内存,磁盘.开发人员还得多copy好多lib文件,占用调试时间,岂不是很麻烦.
不要买一送一,我不想要就别给我. :)
【有时候也得考虑兼容性】
一般来说,一个公司的客户会有很多,用户的运行环境是各种各样的.jdk1.3,jdk1.4甚至还有jdk1.2.这样我们在编程的时候就必须做一些妥协,有些函数库就不能使用.
如果这些用户的jdk不能升级(一般来说都需要购买新的产品才能升级),或者我们必须对这些情况妥协,那么我们就要在开发中考虑这些问题.
例如以前,在Servlet 2.2的时候,因为没有setCharacterEncoding,我们必须手动对各种字符进行转换.当Servlet2.3的时候,可以使用这个函数了.但是为了客户考虑,我们只好没有升级还是使用原来的方法.(当然后来大多数用户都使用了新的App Server,我们就可以使用filter来处理编码问题了).
向下兼容性确实让人头疼,JDK1.5也发布好久了,不过我们现在也不能使用,只能自己没事测试测试.
在编程的时候,一定要设置好IDE的兼容性设置,防止我们使用了不能使用的特性.Jbuilder,Eclipse都有类似的设置.
【成本与现实,给用户以选择余地】
全文检索,lucene,like是三种对大文本字段检索的方法.那么你采用哪一种呢?
也许你会毫不犹豫的说"全文检索" (我看你像TRS公司的托 :P).
正如"强制绑定是不受欢迎的"里面所说的一样,我还是觉得应该给用户以选择的余地.
全文检索是要花钱的或者需要配置,而且一般来说数据库专用的全文检索都是不通用的,lucene是需要开发人员开发的,只有like最简单了,但是太简单了,而且性能也差.
这个时候,也许我们就应该提供几种方式供用户选择了,用户如何选择那就看他们了...
【结束语】
实际开发设计中肯定还存在很多其他的问题,本文不可能一一论述.到此为止. :)
希望各位在开发设计中成为高水平的设计师. :)
分享到:
相关推荐
### 库路径迷踪:在 CMake 中解决找不到库的终极指南 CMake 作为一款强大的跨平台构建工具,被广泛应用于各种类型的软件项目中,无论是开源还是商业项目。其核心优势在于高度的可定制性以及对不同平台的良好支持。...
综合来看,这个JavaWeb登录注册页面项目涵盖了Web开发中的多个关键点,包括用户认证、安全防护、数据库操作和项目管理,是学习和实践JavaWeb开发的一个良好实例。通过深入理解并实现这些功能,开发者可以提升自己的...
它利用了Web开发的主流技术和设计模式,为用户提供了便捷、高效的服务。同时,系统的可扩展性和灵活性也为其在实际应用中适应更多场景提供了可能。对于学习JavaWeb开发的人员来说,这样的项目既是对技术栈的实践,也...
4. 柠檬素材部屋.txt 和 迷踪魅影.txt:这些文本文件可能是关于皮肤设计过程的说明,或者是设计师对"魅影迷踪"风格的灵感来源和创作思路的记录。 5. ad:这个文件名可能是广告相关的,可能包含广告代码或者关于如何...
AICANS 2.0攻克安防机器人迷踪失明症.pdf 本资源文件主要介绍了机器人和智能安防系统的相关知识点。以下是从标题、描述、标签和部分内容中生成的相关知识点: 1. 机器人技术在安防行业的应用:随着机器人技术的...
《迷踪失路》是一款基于Unity引擎开发的第一人称恐怖迷宫游戏,它融合了惊悚元素和解谜挑战,为玩家带来独特的游戏体验。在这款游戏中,玩家将扮演主角,置身于一个阴森恐怖的迷宫之中,寻找出路的同时,还要面对...
-鼠标单击即可射击 -按住单击即可为光束充电,直到充电条充满电,松开即可射击 -WASD 键移动 -收集地图上分布的 3 颗宝石 -收集完 3 颗宝石后,进入位于地图中心的大门 -你需要玩得开心。 SJA 分析数据: ...
**MVC三层架构详解** 在软件开发中,MVC(Model-View-Controller)模式是一种广泛应用的架构设计,尤其在Web应用中。该模式将应用逻辑分为了三个主要部分...理解和实践这样的案例对于提升Java Web开发能力非常有帮助。
系统设计报告可能会详细涵盖需求分析、系统架构设计、数据库设计、界面设计、功能模块实现以及性能优化等多个方面。数据库文件可能包含了图书信息表、用户信息表等,用于存储系统运行所需的数据。 通过这个项目,...
JavaBean是Java开发中的一个组件模型,可以看作是封装了特定业务逻辑的对象,它们在JSP中被用作可重用的代码段,简化了开发过程。 【JavaBean】在这里可能被用来实现成绩计算、查询等功能。例如,一个JavaBean可能...
通过卫星图片测算图片驻点步骤1:在定时时角和赤纬处,添加(0,0)处星星的时角和赤纬,可以用stellarium 步骤2:而在定义平面坐标处添加星星坐标,这里坐标可以用geogebra来测量,不过我是按照鬼蝉的计算方法来写的...
SSM整合是Java Web开发中常见的一种技术栈组合,由Spring、SpringMVC和MyBatis三个框架共同构成。这个组合在企业级应用中广泛使用,因为它提供了灵活的依赖注入、强大的MVC功能以及轻量级的数据访问能力。下面将详细...
SpringBoot是一个由Pivotal团队开发的Java框架,它简化了初始化和配置过程,使得开发者可以更快地构建独立的、生产级别的基于Spring的应用。在瑞吉外卖项目中,SpringBoot可能被用来管理依赖、提供内嵌式Web服务器...
在生物学分类系统中,微生物的分类是按照一个严格的阶元体系进行的,这个体系包括了界(Domain)、门(Phylum)、纲(Class)、目(Order)、科(Family)、属(Genus)和种(Species)。这个阶元体系是生物学家为了...
【C/C++、easyX】一款迷宫类记忆力游戏——《暗夜迷踪》-附件资源
1. JDK(Java Development Kit):Java开发工具包,是编写、运行Java程序必不可少的工具。在Linux中,我们需要下载对应版本的JDK,并通过`sudo apt-get install`或`yum install`命令进行安装,然后设置环境变量,...
PNG图标和3D ICON是两种常见的图形资源,广泛应用于软件开发、网页设计、移动应用界面以及各种视觉传达项目。在本资源包中,包含了2100张128x128像素大小的PNG图标和38张3D效果的ICON,为设计师和开发者提供了丰富的...
【人教版小学二年级语文(下册)生字表】是针对中国小学生设计的一份教学材料,旨在帮助学生在二年级下学期学习并掌握基本的汉字书写和认读。这个生字表分为两个部分:生字表(一)和生字表(二),涵盖了多个主题,...
在标签中提到了"迷踪风暴",这可能是指一种特定的文本挖掘工具或技术,用于追踪和分析文本中的热点话题或趋势。然而,没有更详细的信息,我们只能推测它可能是一个用于实时监控和分析大规模文本流的系统。 "SMS3.1 ...