美文网首页设计匠艺每天写1000字程序员
为什么我要写自己的框架?

为什么我要写自己的框架?

作者: merjiezo | 来源:发表于2016-04-02 14:36 被阅读7308次

我觉得编程的框架应该分为:直接用->抛弃->重拾

框架(framework)是一个基本概念上的结构,用于去解决或者处理复杂的问题。这个广泛的定义使用的十分流行,尤其在软件概念。框架也能用于机械结构。

其实说白了框架就是使用别人造好的轮子。在软件开发里面就是command+C/command+V。

先自我介绍一下,我是一名信管专业的大学生,从我的专业可以看出我就是以后大家嘴里的程序员。洋洋洒洒写了一些代码,用了一些主流的框架,现在有一些体会分享给大家。

作为一个程序员学习一门新技术是让人感到兴奋的,随之而来的问题就是如何快速的掌握语言呐?很多技术的过来人都不约而同的说:用别人已经造好的轮子呗,你看,多省力,在很久以前我也是他们的一员,也喜欢使用大量的框架(js有jQuery、Express、socket.io.js等;PHP有phpword、Yii、laravel;html里面有bootstrap、bootcss、normal)。曾几何时,我觉得很兴奋,在如此短的时间内就可以做到这样的高度,让我十分的开心。开发出的内容也完全符合校内应用的需求。我变成了一个别人眼中的“大师”。

但事情并没有往想象的地方发展。框架用的时间久了之后就发现了一个问题:我真的有学习过吗?我学的内容真的有用嘛,这些框架内的东西能对我今后有帮助吗,当然,这种想法不是一天形成的,还有一个小的故事。

在使用PHP开发网页应用的时候,作为著名的Yii框架,网页有大量代码可以供我复制黏贴,我用的很爽,能在短时间内开发出项目,bootstrap也可以帮助我在短时间内拼接出一个像样的网站,也当上了校内某组织软件开发部的负责人。但当有一天在讲授开发经验的时候,当我当着大家的面真的静下心来写我需要展示的一个类的时候,以前用了这么多的框架,我发现在这么多人面前的我已经几乎写不出来一个正确的类了!!运行的时候不是这边有问题就是那边出现了错误。原来在以前我只想着如何使用它,如何整合别人的代码,却忘了一个最最本真的东西:创造!我几乎失去了编程的能力,变成了电脑面前的代码复制员。

结果是令人沮丧的,当天我都在思考这个问题:我今后到底能干嘛?是继续做一个代码复制员,还是打起精神,看看这些框架的背后有什么内容吧!

于是我就投入了看源码的行列:我打开了bootstrap,打开了Yii框架的vender文件夹,打开了jquery,试图去打开那个封装起来的黑盒子,了解这些框架背后的智慧。

结局可想而知,作为css的bootstrap还可以理解,但是其他大型框架的代码几乎就是一座不可逾越的大山,让人望尘莫及。难道就这样放弃,继续用下去,不触碰那个永远神秘的盒子了吗?

答案显然不是这个,电影《火星救援》的最后有一句话说的很好:
你要么认命放弃,要么继续投入工作,把它们都解决了。

然后我就睡了一觉!哈哈开个玩笑啦,没有!我清醒了,喝了口水,跑了个步,马上投入了工作,开始阅读!然后发现我还是看不懂它!怎么办呐,诶!我看不懂,我可以按照自己对框架的理解编写一个框架呀!于是我马上投入了工作,大量的Google之后发现行不通,怎么办!聪明的我马上想到我不编写整个框架,那我写部分功能也是可以的呀,于是就有了我的第一个框架的扩展:DbFactory.php文件。

DbFactory.php[1]
DbFactory.php[2]
DbFactory.php[3]

我很兴奋,因为我终于开始创造点东西出来了,虽然他很基本,连接了数据库,封装了几个方法,但是我觉得这距离大师又近了那么一丢丢,每天都是一丢丢,那我还得了哈哈😄!

当你真正的开始想让你的代码变的更好,你会去掌握和了解到更加多的知识,时间久了以后会在有一天瞬间茅塞顿开。
这就是开发里的量变引起质变。

当写出这个文件的时候,我是很兴奋的,马上分享了出去,结果就是啥都没有发生,世界还是那样,我也没有变帅,说明我在成为大师的路上只进步了一点点,或者干脆没有进步,只是知道的多了点。于是我又开始新的一轮学习,看大量的书籍,有一天我重新打开Yii框架在我当时看起来很难理解的代码的时候我发现:我居然有点明白它的工作原理,知道整体的架构了!
这个发现了这个的我很兴奋,一个想法油然而生:为何我不开始编写自己的框架呐!
说干就干,花了一天的时间就完成了基础类和代码的编写,包括路由、模型类、控制类、一些基本的方法都封装在里面,我觉得自己简直太厉害了,居然在我看来可以完美的运行!我觉得已经可以了,于是就把它推了上去(ps:没有加上自动require,只是在每个文件的最上面加上了),在不断的测试之后就发现,这边有bug,那边也有!require不使用绝对路径简直难用,整个框架想一盘散沙,一点都不好用,可扩展性几乎没有,我又陷入了沉思。错在哪里了!
真正的顿悟是在最近一次打开Yii框架源码,看到了autoload之后顿悟:其实可以根据需求自动加载文件,很多问题也就解决了,当然,这篇文章也就列举这一个问题,其实我碰到的问题不止这些,很多以前理解错误的地方也随着编写这个框架变的正确了✅。

下图是我现在框架的架构。代码太多,就不做展示了。

如今的框架图.png

之后的工作就是让框架更加的丰满,不敢说比得上一些主流的框架,说实话根本不能够和他们相比,无论从结构、思考还是思考上,编出主流框架的他们才是真正的大师。但我通过这个至少有了自己的思考,寻找回了自己的创造力,让自己距离真正的大师进了一点,不得不说这种进步是让人兴奋的。下图是我早上刚刚启动的js框架。

js框架

最后说一下我认为的好处:
1、对整体架构的思考
2、提高自己的创造力
3、提高自己独立思考的能力
4、提高自己阅读别人代码的能力
5、用到和认识了大量的编程语言内置函数

下面是我的一点小建议:如果是在公司,肯定有大量的业务和需求需要实现,那就直接拿来用,如果你是学生,那你很幸运,你有大量的时间学习,那就从现在开始动起你的键盘开始编写吧!无论多么困难,时间长了你就会发现,对整体的思考就越来越清晰,明确了!

生命不息,编程不止,我喜欢编程,喜欢编出好用的东西后的成就感,所以我继续了,有志同道合的人去简介那边找到我,能看到现在的人一定是真爱,谢谢!

相关文章

  • 为什么我要写自己的框架?

    我觉得编程的框架应该分为:直接用->抛弃->重拾 框架(framework)是一个基本概念上的结构,用于去解决或者...

  • 为什么我要写自己的框架?

    我觉得编程的框架应该分为:直接用->抛弃->重拾 框架(framework)是一个基本概念上的结构,用于去解决或者...

  • 2018-06-11

    【web框架编写】05:14——框架:什么是web框架?为什么要有框架?如果支持路径过多,需要写的单独的文件也会相...

  • 2018-06-11web框架编写

    【web框架编写】05:14——框架:什么是web框架?为什么要有框架?如果支持路径过多,需要写的单独的文件也会相...

  • Python+Pytest+Excel+Jenkins+Allu

    接口框架规划 接口测试框架对比 为什么要写代码实现接口自动化框架 自动化框架介绍 可以理解为工具的集合,把日常所需...

  • 「写而有用」疯了也好,这些日子里的胡思乱想

    你为什么要写作? 你为什么要写作? 你为什么要写作? 大家,扪心自问自己这...

  • 工作随笔序言

    一、为什么要写工作随笔? 1、积累工作经验,完善知识框架 2、复盘工作内容,向自己学习 3、系统思维,跃迁式成长 ...

  • 问问自己,我为什么要写作?

    我是一个70后,从小就有一个梦想就是能够成为作家,阴差阳错的这个梦想一直没有实现,随着岁月的流逝,被深深地埋在心底...

  • 我为什么要写作

    我为什么要写作?这个问题我问我自己是不是很可笑?其实不然,我为什么要写作,我得问问自己,问问清楚了我的写作生涯开始...

  • 为什么要写?我只说说我自己

    为什么要写?起初是因为我不太会说话。很长时间内,我都想变成一个真的哑巴,那样我就可以理直气壮不说话。 好像是小学考...

网友评论

  • 成功的失败者:同感呀,一年多了,自己完全成为一个代码搬运工,而且跑马观花的学了php,python,oc,swift,java但是很多东西都不懂只是会做一些简单的项目。我打算自己最后做一个自己设计的项目之后,认真学学java学一些原理上的东西
  • f74a0d287e07:生命不息,编程不止
  • 无痕无敌:框架我倒是会写,可是我不会yii2,不会快速开发,楼主教教我?
    merjiezo:@无痕pan 自编框架其实都很有勇气,因为会碰到很多问题,yii2官方文档很全,不用我教,你看那个肯定会很快的
  • 水番丘山ks:自己写框架的都是了不起的,所以得跟你学习,解读Spring去,也写一个自己的框架出来。
    水番丘山ks:@merjiezo 对了 你github的地址是多少?求地址
    水番丘山ks:@merjiezo 嗯好的,我去看看,其实我自己也实现了单个servlet并发处理所有请求,哈哈。我也看看你是怎么写的学习一下。 :smile:
    merjiezo:@飘散的法国梧桐 看我Github上最新的,写了个单个servlet处理所有请求,还有controller注解,不过只是按照自己的理解,用了一些反射,准备啃spring源码
  • 459fc4e8fd50:然而我并不赞成这种做法。轮子造那么作甚 :joy:
  • 梨捉阳笆:刚看到一篇程序员变轨的文章,难道你就是那个作者?
    merjiezo:@梨捉阳笆 不是:joy:
  • dd933e9f74da: :sweat_smile: 真爱
  • 3e2d08098008:对于校里的学生,使用过这么多框架,也会自己写框架, 已经非常非常了不起了。建议楼主用PHPSTORM,里面可以跳转看YII2 vender的源码。
    merjiezo:@Xi樂 好!谢谢!
  • FreeManFree:提高思考能力,提高创造力,这种思维真是大赞!
  • PM熊叔:有进化成大神的潜质,加油!
    merjiezo:@Gold3bear创新设计师 哈哈!谢谢
  • 闫大伯:想当年模仿Tp还写过一个框架。重点是理解框架是怎么工作的,没必要一定要用自己写的,毕竟一个人的精力是有限的
  • 游民恋星:恭喜楼主进步!思想成就一切
  • 0ac7f9022bf6:就是 这种感觉
  • 一俢:收
  • 以技术之名:同感,用框架一直觉得自己只不过是代码的搬运工
    merjiezo:@Flying_Einstein 是啊!

本文标题:为什么我要写自己的框架?

本文链接:https://www.haomeiwen.com/subject/zcoylttx.html