热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

怎样提高代码重用性

代码重用性是开发人员经常提起的问题。但是到实际项目中,很多人并不知道怎么落地。本文介绍一些方法,可以帮助你编写可重用的代码,节省宝贵时间。一、项目开始前,要有个正确的规划   

"代码重用性"是开发人员经常提起的问题。 但是到实际项目中,很多人并不知道怎么落地。
本文介绍一些方法,可以帮助你编写可重用的代码,节省宝贵时间。


一、 项目开始前,要有个正确的规划

       在开始正式编码前,召集团队成员,规划应用程序所有的需求,并按照水平方向分层,垂直方向模块化的方式来划分。
 
       例如 —— 考虑一个需要数据模型、数据库、组件控制器和视图的应用程序。 所有这些单元都应该以同样一种方式开发,通过有效的分层,降低层与层之间的依赖。比较简单的【表现层/业务层/数据持久层】的分法可以借鉴。 这些分层可能是团队里不同人员负责的,好的分层方式,有助于将来的升级维护, 技术邻域常说的低耦合设计方式,就是这样的道理。  

       高耦合的极端例子, 就是oracle版本升级的时候,一个简单的bug,都需要非常专业的技术人员测试修改2周。 可见高耦合系统,在系统升级维护上,造成巨大的成本支出。


   
二、创建通用的功能函数类库UtilityClass

       这些类库应该是跟项目本身无关, 可以直接在其他项目中使用。例如
       所有日期字符串格式方法;
       Html 错误代码检测和错误信息;
       电子邮件验证; 
       日期格式;
       图像压缩;
       图像转换(png-jpg 或反之亦然);
       图片下载;
       Excel处理;
       文件格式转换;

       可被抽象的, 在多个项目中,无差别使用的功能,都应该添加到通用类库UtilityClass中。
  


三、 尽力避免复制粘贴代码片段

       初级开发人员经常将代码片段从一个模型复制到另一个模型,而没有为它创建一个单独的公共类 。 当需要更改任何逻辑或要添加新代码时,需要在所有其他地方进行更新。 

       任何一组代码至少需要两次,你应该为其制定一个方法,一堆相似的功能或相同用途的功能放在一个新的类中, 一堆没有任何依赖性的类构成了一个包或可重用的库。  当然初级开发人员可能是因为抽象能力弱,或者是图前期的省事,大量复制粘贴代码片段,造成后面系统维护困难的局面。



四、将一个复杂的过程拆分成几个简单的过程


        拆解后,每个简单的过程,都有比较明确的职能。  这样简单的过程具有很好地重用性,而不是仅服务于一处代码。
         假设您需要解析一个 json 文件,选取一个出生日期并计算年龄。 这个任务非常小,以至于人们在大多数情况下都希望用一种方法编写整个任务。 实际上你应该分两步来完成,
        解析 json 并从中创建一个模型对象, 然后传递给另外一个方法,该方法用于计算年份中两个日期之间的差异,得出年龄。  看似琐碎的拆分,我们得到了2个可重用的过程,解析模型过程,
计算年龄过程。 大部分初级人员需要养成正确拆解复杂过程的良好习惯。


  
   
五、做一个思想勤快,四肢懒惰的程序员


        资深的技术会建议大家做一个思想勤快,四肢懒惰的程序员,一生不要写两次类似的代码。 不断提高抽象思维能力,以跨项目有用的方式编写代码/方法。


    
    通过上面的介绍,大家对如何提高代码重用性应该有了不错的了解。  

    当然想要在代码重用性层面上,有更进一步的造诣,需要更深入的研究, 比较好的方向就是借鉴低代码编程

     低代码编程的整个设计思想,把代码重用性推向了极致。  组件、元素、单页、权限、事务、前后端函数等都是跨项目重用的。

     原来认为无法抽象的业务层, 通过无结构系统设计的思路,在线配置也完成了重用。
   
     深奥的内容,不适合于普通的技术人员,这里就不展开讲, 欢迎资深的技术人员私信探讨。



推荐阅读
  • 将XML数据迁移至Oracle Autonomous Data Warehouse (ADW)
    随着Oracle ADW的推出,数据迁移至ADW成为业界关注的焦点。特别是XML和JSON这类结构化数据的迁移需求日益增长。本文将通过一个实际案例,探讨如何高效地将XML数据迁移至ADW。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 解决远程桌面连接时的身份验证错误问题
    本文介绍了如何解决在尝试远程访问服务器时遇到的身份验证错误,特别是当系统提示‘要求的函数不受支持’时的具体解决步骤。通过调整Windows注册表设置,您可以轻松解决这一常见问题。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文介绍了基于Java的在线办公工作流系统的毕业设计方案,涵盖了MyBatis框架的应用、源代码分析、调试与部署流程、数据库设计以及相关论文撰写指导。 ... [详细]
  • 雨林木风 GHOST XP SP3 经典珍藏版 YN2014.04
    雨林木风 GHOST XP SP3 经典珍藏版 YN2014.04 ... [详细]
  • 探索OpenWrt中的LuCI框架
    本文深入探讨了OpenWrt系统中轻量级HTTP服务器uhttpd的工作原理及其配置,重点介绍了LuCI界面的实现机制。 ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
  • Windows环境下Oracle数据库迁移实践
    本文详细记录了一次在Windows操作系统下将Oracle数据库的控制文件、数据文件及在线日志文件迁移至外部存储的过程,旨在为后续的集群环境部署做好准备。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • Node.js模块化的优势及实践
    本文探讨Node.js模块化的重要性和具体实现方式,包括其带来的代码复用性增强、可维护性提升、以及如何有效避免命名冲突等问题。 ... [详细]
  • Node.js 断点调试指南
    本文详细介绍了利用Google Chrome DevTools和Visual Studio Code两种工具进行Node.js应用的断点调试技巧。 ... [详细]
  • 高效产品原型设计:技巧、经验和注意事项
    本文由PMTalk社区资深作者AllenDan撰写,分享了如何在日常产品工作中快速有效地设计产品原型,并确保设计易于理解,减少评审时的质疑。文章不仅提供了实用的技巧和经验,还强调了设计过程中的注意事项。 ... [详细]
  • Java虚拟机及其发展历程
    Java虚拟机(JVM)是每个Java开发者日常工作中不可或缺的一部分,但其背后的运作机制却往往显得神秘莫测。本文将探讨Java及其虚拟机的发展历程,帮助读者深入了解这一关键技术。 ... [详细]
author-avatar
sunhuan
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有