`

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

阅读更多

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

    先看第一个, 即现在项目的套路及缺点.
    虽说现在所项目还是不很多, 但对项目所用架构和技术还是有一定了解的. 现在是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, 程序运行效率应该高些. 这是性能上的要求了, 现在体会的还不深.
    但要想达到设计优良是有代价的, 是要投入巨大的人力物力财力的, 这样一般的项目也招架不住, 于是我们要感谢那些开源框架的伟大了.

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

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

分享到:
评论
4 楼 cyberblue 2009-03-14  
WhisperQQ 写道
程序设计的美确实是很虚的概念。
开发人员认为的美在客户看来可能是无用的;客户认为的美在开发人员看来可能是幼稚的。

所以美只是一个共产主义式的理想罢了。


也不一定,同样是装配工,装出来的东西有没有毛刺就看你给多少钱了。

代码方面实际上就是一潜规则,给钱少还要代码好,给人弄急了就不干了,所以大多数人在这方面均衡一下就算了。
3 楼 魔力猫咪 2009-03-14  
开发人员的美怎么是没用的呢?只有优美的代码才便于阅读,适合维护,容易复用。没人愿意去维护一个结构混乱、代码难以理解的系统。自己做不到不要怨理论错误。
客户受其技术能力制约,当然不知道你的这些优美的好处。这就要你用它能听的懂的语言说出来。客户如果能听懂你的技术那他就自己干了,你还赚什么啊。比如代码简洁,结构合理。你可以告诉他这样可以加快BUG的修复速度,减少因BUG引发的损失。代码复用,告诉他这样可以一次编写反复使用,不用加钱重新写。你和他说别的他不知道,说钱肯定知道。
2 楼 wei_jing 2009-03-13  
我也有类似的想法
1 楼 WhisperQQ 2009-03-03  
程序设计的美确实是很虚的概念。
开发人员认为的美在客户看来可能是无用的;客户认为的美在开发人员看来可能是幼稚的。

所以美只是一个共产主义式的理想罢了。

相关推荐

    改动的viewPagerIndicator-三角形指示器

    在这个定制版的 ViewPagerIndicator(三角形指示器)中,开发者可能对原始库进行了以下改动: 1. **图形设计**:原生的 ViewPagerIndicator 多采用圆点或线条作为页面指示器,但这里改为了三角形。这种设计可能更...

    2.36附表一:一个具体风险对项目主要目标的风险影响对照表.doc

    附表一“一个具体风险对项目主要目标的风险影响对照表”提供了一种量化评估风险影响的方法,通过顺序度量、线性度量和非线性度量三个维度,来衡量风险对成本、进度、范围和质量四个关键项目目标的影响。 1. **成本*...

    C#毕业设计子函数改动

    毕业设计通常是一个综合性的项目,它要求学生运用所学的理论知识解决实际问题,而C#作为.NET框架下的主要开发语言,其强大的功能和灵活性使得它成为许多软件开发项目的首选。 在C#毕业设计中,子函数(也称为方法或...

    参考资料-房产项目设计阶段成本控制与优化.zip

    在房地产行业中,设计阶段的成本控制与优化是项目成功的关键因素之一。这个阶段的工作不仅关乎项目的经济效益,也直接影响到项目的质量和最终用户体验。以下是对"参考资料-房产项目设计阶段成本控制与优化.zip"中...

    dotnet 5 破坏性改动 WPF 和 WinForms 的 OutputType 输出类型重定向为 WinExe 类型

    总结起来,`.NET 5`对WPF和WinForms的`OutputType`重定向至`WinExe`是一个重要的破坏性改动,旨在提供更好的兼容性和性能。开发者应当了解这一变化,并在升级到.NET 5时检查和更新项目配置,以避免潜在的不兼容性和...

    43页项目管理精髓——工程项目可行性研究.ppt

    工程项目的前期策划工作包括:工程项目的前期策划、工程项目的构思、工程项目的目标设计、工程项目的定义和总体方案策划、工程项目的可行性研究和评价等。 工程项目的构思是对项目机会的捕捉。人们对项目机会必须有...

    0218金融项目改动点整理.pptx

    在“0218金融项目改动点整理.pptx”中,我们主要关注的是金融项目的赠品逻辑列表及其页面改造的改动点。这些改动对于优化用户体验、提高业务流程效率以及确保金融产品促销策略的有效实施至关重要。 首先,让我们...

    dotnet 7 WPF 破坏性改动 按下 F3 让 DataGrid 自动排序.rar

    本文档将详细讲解其中一个显著的改动:按下F3键自动触发DataGrid排序功能的改变,并提供应对策略。 **F3按键行为的改变** 在.NET Framework及之前的版本中,WPF的DataGrid控件并未对F3键有特定的行为定义。然而,...

    项目设计计划表.pdf

    该项目设计计划表涉及了多个IT相关的技术和工程领域,主要涵盖了石油炼制工艺改进、自动化控制系统升级、安全措施强化以及环保设施改造。以下是这些内容的主要知识点: 1. 自动化仪表与DCS系统:在催化分厂,改造...

    网络通讯录 简单网页 三层架构

    在IT领域,三层架构是一种常见的软件设计模式,尤其在网络通讯录这样的应用中,它能有效组织代码,提高可维护性和可扩展性。三层架构将应用程序分为三个主要部分:表示层(Presentation Layer)、业务逻辑层...

    python项目源码-区块链实现的数据完整性验证源码.rar

    本资源提供了一个使用Python实现的区块链数据完整性验证项目源码,旨在帮助计算机相关专业的学生、老师和企业员工更好地理解区块链技术以及数据完整性验证的原理和实现方法 该项目采用了以下关键技术: 1. Python ...

    delphi 监视文件夹改动

    综上所述,"Delphi 监视文件夹改动"项目涵盖了Delphi编程中的文件系统监控技术,API调用,事件驱动编程,以及用户界面设计等多个重要知识点。通过理解和应用这些概念,开发者可以构建出高效且可靠的文件系统监控解决...

    能源计量管理系统项目设计方案.pdf

    《能源计量管理系统项目设计方案》详述了一种基于艾科能源计量管理系统的解决方案,该系统在国内市场上占据主导地位,尤其在中央空调计费领域的应用广泛而成熟。以下是对方案中关键知识点的详细阐述: 1. **品牌...

    qt画板设计(改动版)

    总之,“qt画板设计(改动版)”项目集成了Qt的图形界面、数据库交互和用户认证等核心功能,提供了一个富有创新性和实用性的绘图工具。这个项目不仅展示了Qt的强大功能,也体现了开发者在软件设计和用户体验方面的...

    企业所得税准则应用指南.docx

    这一规定是为了确保平稳过渡,同时避免对历史财务数据的大幅改动。 总的来说,这份指南为企业提供了详细的所得税会计处理规则,确保企业在遵循会计准则的同时,合理计算和报告所得税费用,从而提供准确的财务信息。...

    Eclipse开发入门与项目实践 源代码

    1. **插件扩展性**:Eclipse的核心是一个工作台,可以通过安装不同插件来支持各种不同的开发任务,如Java、C++、Python等。 2. **统一的用户界面**:Eclipse的界面设计简洁明了,具有编辑器、透视图、视图和操作等...

    尚硅谷书城项目说明1

    【尚硅谷书城项目说明1】的描述涉及到了项目开发中的关键步骤,主要集中在前端验证和软件的三层架构实现上。下面将详细阐述这两个知识点。 首先,前端验证是提高用户体验和保证数据完整性的必要手段。在尚硅谷网上...

    三层架构例子真实项目一部分

    三层架构,顾名思义,包含了三个主要层次:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。每一层都有其特定的角色和职责,确保了应用程序的模块化和解耦。 ...

    教育资料完美版(2021-2022年)项目实施方法论V1.3.docx

    4. 个性化需求与改动:解释定制化服务的价值,强调适应用户需求而非简单减少改动,以获得客户的理解和合作。 5. 原有系统了解:全面了解客户原有系统是必要的,以避免冲突,确保新系统的无缝集成。 6. 协调力度不足...

    Dreamweaver+ASP.NET动态网站设计与典型实例

    MyFirstPage.aspx:一个简单的ASP.NET程序 \3 (第3章) default.html:个人博客首页面 \5 (第5章) 5-1.aspx:个人简历页面 \6 (第6章) Friend.mdb:示例所引用的好友地址簿数据库 DataGrid.aspx:...

Global site tag (gtag.js) - Google Analytics