[闲侃DRY] 自制框架 vs. 开源框架

2023-11-11 03:32
文章标签 vs 框架 开源 自制 dry 闲侃

本文主要是介绍[闲侃DRY] 自制框架 vs. 开源框架,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


接着上一篇的思路聊。既然我们可以把开发者社群看作一个整体,copy-paste别人的blog文章就是在违背DRY的精神,其实所谓"重造轮子"道理也是一样,既然别人都已经做了相同的事情,并且把它开源了,并且你看了它的代码以后,觉得做得不错,为什么还要自己费心去实现同样的功能呢?自己来实现能给你带来什么好处呢?

我可以列举一些我认为可能会让我们选择自己来做的理由:

  1. 我比其他人更了解我们自己的需求。
  2. 自己实现起来更容易,代码量更小,也更好用。
  3. 我是做技术的,能够DIY,就DIY,这样更能体现我的价值。

这些理由有它的道理,但是我们有必要仔细掂量掂量:

  1. 我比其他人更了解我们自己的需求。这是软件开发中很常见的一个误区,客户的需求难以把握,随着时间的推移,我们自己的技术层面的需求实际上也在不断变化,开源的框架往往经历了更多的考虑和验证,并且有一群热心的维护者帮你做bug-fix和升级,甚至我们自己就可以成为这群热心人中的一员。
  2. 自己实现起来更容易,代码量更小,也更好用。一开始确实是这样的,开源的框架为了满足不同的需要,往往需要比我们自己写代码要更加复杂和冗余,但是自制框架意味着我们自己定义的接口规范,这个接口规范能不能够在整个项目周期保持稳定暂且不谈,就算接口实现的再简单,项目中其他人也需要时间去理解和消化,然后记住一个定义好的调用方式,今后新加入的工程师也需要学习这个接口规范。开源框架则做得更好,一方面在这个项目中积累和学习到的知识,可以直接用在其他采用同一框架的项目中,另一方面新加入的人如果有过该开源框架的开发经验,上手时间可以缩短。
  3. 我是做技术的,能够DIY,就DIY,这样更能体现我的价值。我必须承认,我本人就亲身经历过这样的情况。在即将结束的这个项目中,我甚至自己DIY了一个简易的.NET报表引擎,为的是甩开Crystal Reports。一开始能够DIY报表引擎的想法让我兴奋得睡不着觉,最终前后花了3天很满意的完成了设计和开发,并交付报表开发人员重画报表。可是真正用了一段时间之后,基本的需求满足了,基本的可扩展性也具备,但是缺少可视化设计器、更灵活的公式、更丰富的报表元素,基本上就定型了,没有人有时间和精力再去维护它。

在很多开发团队,大家经常碰在一起讨论具体的技术和设计,这很有必要,有时也不可避免。但是也许Joel Spolsky说的对,软件设计很难,但是比设计软件更难的,是同整个team一起设计软件。做技术的,对于自己了解、掌握、做过、尝试过的东西,对于自己熟悉和信任的东西,多多少少有些偏袒,而对于新的、自己不了解、不熟悉的东西,则难免心存疑虑。这就难怪很多设计讨论会最终很难达成一致。这个时候,要么由技术上的最高权威直接拍板,定下来是什么就是什么,要么就分歧双方或多方各自陈述,然后由项目外部的实体进行独立仲裁。

我看好开源框架,尤其是那些经过考验广泛被采用的框架,因为相比自制框架,它们有着更大的优势。


96071.html

大胃 2007-01-26 00:32 发表评论

这篇关于[闲侃DRY] 自制框架 vs. 开源框架的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/387268

相关文章

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

MyBatis框架实现一个简单的数据查询操作

《MyBatis框架实现一个简单的数据查询操作》本文介绍了MyBatis框架下进行数据查询操作的详细步骤,括创建实体类、编写SQL标签、配置Mapper、开启驼峰命名映射以及执行SQL语句等,感兴趣的... 基于在前面几章我们已经学习了对MyBATis进行环境配置,并利用SqlSessionFactory核