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

怎样提高代码重用性

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

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


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

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

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


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

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

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


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

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

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



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


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


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


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


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

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

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

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



推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • HTML学习02 图像标签的使用和属性
    本文介绍了HTML中图像标签的使用和属性,包括定义图像、定义图像地图、使用源属性和替换文本属性。同时提供了相关实例和注意事项,帮助读者更好地理解和应用图像标签。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
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社区 版权所有