`
maimode
  • 浏览: 416226 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

常用开发规范心得

阅读更多

通过一段时间的看程序和修改别人的程序,简单做了一下总结,自己的一点观点,这也是上班后第一次发表到每月技术文章中的文章,现在贴出来,以后自己回头再看时供自己比较一下。

 

1.       避免“串起来”

如果一个功能需要多个步骤按次序完成,那么各个分步骤模块儿之间不要发生调用关系,并且按顺序执行的要求也不要由每个分步骤模块儿自己来决定,要交由宿主方法来组织。

 

示例:

不推荐模式:

推荐模式:

functionA(){

rt = functionB(rt);

    return rt;

}

 

functionB(parameter){

           return functionC(rt);

}

 

functionC(parameter){

    return rt;

}

 

Void main(){

           return functionA();

}

 

functionA(){

           return rt;

}

 

functionB(parameter){

           return rt;

}

 

functionC(parameter){

    return rt;

}

 

Void main(){

a = functionA();

b = functionB(a);

c = functionC(b);

return c;

}

 

执行顺序由各函数决定

执行顺序由宿主方法决定

缺点:模块之间耦合高,不利于代码或宿主方法中功能变动时的维护。

优点:各分步骤模块之间偶尔度降低,执行步骤可灵活统一地在宿主方法中被控制。

 

2遵循“谁创建,谁负责;取用分开”

         如果某个操作需要一些对象作为前提条件,那么尽量把这些对象的创建和业务操作中依赖对象的处理逻辑分开。

 

示例:

典型的数据库操作中会出现这种情况,我们操作数据库表的时候需要先创建一些访问数据库的对象如Connection,然后利用Connection对象去执行我们的sql命令。

我们可以将这个任务划分为几个子任务来处理:

a.创建用于数据库连接的Connection对象;

b.构造sql命令的处理逻辑,调用连接对象执行命令;

c.连接对象的回收;

宿主方法中分别调用这几个模块儿来实现最终的功能。

 

不推荐模式:

推荐模式:

//一个方法完成所有功能

void main(){

Connection conn = null;

…//获取连接对象过程

conn = new Connection();

 

//构造sql并执行、处理结果

Sql = “select * from table”;

ResutlSet rs = Conn.execute(sql);

…//处理结果

 

//连接对象销毁

conn.close();

}

//只处理跟业务操作有关的

Void functionF(Connection conn){

//构造sql并执行、处理结果

Sql = “select * from table”;

ResutlSet rs = Conn.execute(sql);

…//处理结果

 

}

 

//宿主方法组织完成功能

Void main(){

//a.创建数据库连接的Connection对象

conn = new Connection();

 

functionF(conn);//执行

 

//c.连接对象的回收;

…conn回收

}

缺点:连接对象难以统一管理,代码复用性和可移植性不高。

优点:连接对象可以被统一调度管理,减少连接对象只被创建而“忘记”关闭的潜在危险的发生;降低各模块代码的复杂性。

 

 

3. 数据包装、验证或预处理操作应和业务逻辑分开

如果一个模块有输入或输出数据,但是通常情况下又需要对输入和输出的数据进行格式转换,如:输入数据进行base64格式转换,输出数据包装成json串,那么建议尽量保持业务处理中的输入和输出数据是最原始的,而将数据的预处理和格式转换等放在专门的模块中处理。

 

示例:

不推荐模式:

推荐模式:

Void main(p){

p = …p;//格式转换

 

…//关于p的业务逻辑

 

p = …p;//格式转换

 

return p;

}

//公用的转换方法

functionA(p){

rt = …p;//格式转换

return rt;

}

 

Void main(param){

p = functionA(param);

 

…//关于p的业务逻辑

 

rt = functionA(p);

return rt;

}

缺点:如果格式转化逻辑发生变化,代码将难以维护;各业务逻辑部分的代码重复过多,模块复用率低。

优点:能够统一管理数据包转格式;模块复用率提高,代码易于维护。

 

0
1
分享到:
评论

相关推荐

    delphi开发心得.doc

    总的来说,Delphi开发心得涉及到代码规范、数据库连接和业务逻辑处理等方面,这些都是开发高效、稳定的Delphi应用程序时必须掌握的核心技能。通过不断实践和学习,开发者可以更加熟练地运用这些工具和方法,提升自己...

    软件开发实习心得体会参考.pdf

    例如,常用的开发工具有Visual Studio、Eclipse、IntelliJ IDEA等。 - 其中Visual SQL Server可能是文档中提及的一个工具,它通常是指微软推出的数据库管理系统SQL Server以及提供的一系列开发和管理工具。 2. ...

    WebGame的AS端开发心得

    ### WebGame的AS端开发心得解析 #### 一、理解AS项目全局结构 在WebGame的AS端开发过程中,理解项目的整体结构是非常重要的一步。这不仅有助于开发者更好地组织代码,还能确保项目的可维护性和可扩展性。对于AS端...

    Unity3d心得

    ### Unity3d心得 #### Unity3d基础知识概览 Unity3D是一款强大的跨平台游戏引擎,广泛应用于2D和3D游戏开发、建筑可视化、实时动画等。掌握Unity3D的基础概念是进行游戏开发的前提。 - **场景(Scene)**: 类似于...

    matlab算法源码实验心得总结

    由于描述中提到的“范文/模板/素材”,这可能意味着在实验心得撰写过程中可以参考已有的论文、报告模板或相关素材,这样有助于撰写出格式规范、内容完整的实验报告。 总结来说,通过标题“matlab算法源码实验心得...

    C#学习心得 v1.0

    `Dictionary, TValue>`是C#中一种常用的数据结构,用于存储键值对。它提供了快速查找和修改数据的功能,非常适合用来处理关联数据。 ```csharp Dictionary, int> dict = new Dictionary, int>(); dict.Add("one", 1...

    php技术个人学习心得文档

    通过阅读这份"php技术个人学习心得文档",你不仅可以学习到PHP的基本概念,还可以了解如何在实践中应用它们,进一步提升自己的Web开发技能。在学习过程中,不断实践、解决问题并积累经验,将是成为PHP专家的重要步骤...

    学习java的心得体会 (2).docx

    在学习 Java 时需要掌握 Unix 开发环境、Unix 系统原理、Unix 常用命令,熟练掌握 Unix 常用命令;熟练构建下的 Java 开发环境。然后学习 Java 语言基础,包括算法基础、常用数据结构、企业编程规范。接着掌握 Java ...

    JAVA基础加强 --学习心得一(JAVA中常用英文单词简写释义).pdf

    在学习JAVA基础的过程中,了解并掌握一些常用的英文缩写是非常重要的。这些缩写不仅代表着JAVA技术的核心概念,也是深入理解JAVA平台和应用开发的关键。以下是一些重要术语的详细解释: 1. **API (Application ...

    github心得体会1

    在本学期深入学习GitHub的过程中,我逐渐熟悉了这个强大的版本控制系统,并对其常用操作有了全面的认识。GitHub不仅是存储和管理代码的平台,也是开发者们协作交流的桥梁。以下是我对GitHub核心功能的理解和心得体会...

    UiPath实践经验总结.docx

    以下是 UiPath 实践经验总结,涵盖了从日志策略到变量命名、读取 Configuration 到避免使用非官方的 Activities 等多方面的经验心得。 1. 日志策略:将 UiPath Robot 的 Logging Level 设为 Verbose,避免重新发明...

    JAVA基础加强 --学习心得一(JAVA中常用英文单词简写释义).docx

    17. **JCP (Java Community Process)**:JCP是一个开放的组织,负责制定和批准Java技术规范,推动Java生态系统的发展。 18. **WFC (Web Foundation Classes)**:WFC通常指的是.NET框架中的Web Forms控件库,但在...

    课题研究心得体会(8篇).pdf

    9. 研究伦理和规范:课题研究中要严格遵守学术诚信、尊重知识产权、保障研究对象的隐私和权益等伦理规范。这不仅关乎个人声誉,也是科学共同体的共同要求。 10. 个人成长与反思:课题研究是个人学术成长的重要途径...

    安卓期末课程设计、一款仿学习i强国的强国通App 包含源代码、使用手册和心得体会

    8. **测试与调试**:在开发过程中,单元测试、集成测试和UI测试都是必不可少的,JUnit和Espresso是常用的测试工具。同时,学会使用Logcat进行日志调试,找出并修复程序中的bug。 9. **使用手册与心得体会**:提供的...

    QMiniGameStuido:本project仅用于收集整理,自己在开发游戏过程中的一些心得和一些常用代码。并不是完整项目

    QMiniGameStuido项目,正如其标题所示,是一个个人开发者整理的游戏开发心得和常用代码集合,并非一个完整的游戏项目。这个项目为我们提供了一个学习和参考的平台,让我们可以深入了解C++在游戏开发中的应用。 首先...

    软件测试实习生的心得体会.doc

    - **编写测试用例和缺陷报告**:熟练掌握测试用例的编写技巧,以及问题报告的规范。 - **安卓系统知识**:了解安卓系统常用工具和命令。 - **自动化测试工具**:熟悉至少一种自动化测试工具的使用。 - **测试培训...

    初学python的体会心得.docx

    9. **工具的运用**:学习前端开发时,JQuery是一个常用工具,它简化了JavaScript的许多操作。尽管初学者可能从原生JS开始,但学习和掌握JQuery可以提高开发效率。 10. **展望未来**:无论是前端还是Python,技术都...

    Autolisp编程心得.doc

    ### Autolisp编程心得知识点详解 #### 一、养成良好的书写习惯 1. **选择合适的编辑器**:选择一个能够支持Autolisp编程特性的编辑器至关重要。Visual Lisp编辑器和Lisplink等专业编辑器能够提供更好的编程体验,...

    编程之美--微软技术面试心得.zip

    通过《编程之美——微软技术面试心得》的学习,读者可以提升自己在算法设计、问题解决、系统理解和编程实践等方面的能力,更好地应对技术面试,同时也有助于日常开发工作中的问题解决和代码质量提升。对于希望进入...

Global site tag (gtag.js) - Google Analytics