2018 年终总结

前言

今年,想说的和总结的其实挺多的,但奈何不善写做,卯足劲才憋出这篇总结(文笔很差,因此文章语言会很生硬且没有衔接感)。html

对待技术

对待技术方面,一直以来的观点是“不要过度执迷技术,应该学习的是技术背后的东西”,但总以为措词怪异。直到今年,看到下面阮一峰老师博客里的这段话,才明白应该这样去表述。前端

实施细节并非知识,而是操做步骤。若是技术栈发生变动,实施细节就会毫无用处。可是,你又不能不学习它,不知道实施细节,就无法作出项目。我以为,程序员应该要警戒,不要落入实施细节的陷阱,不要把所有精力花在实施细节上面,而后觉得本身学到了真正的知识。对待各类语言和工具,正确的态度应该是"进得去,出得来",既要了解足够的细节,也要可以站在宏观的角度看待它,探寻底层究竟是怎么实现的。程序员

摘自阮一峰博客《每周分享第 28 期》数据库

总而言之,就是要以宏观角度来看待实施细节,才能学到真正的知识。下文阐述的内容,是今年的经历、想法与思考,这些让我对这个观点有了更深入地感触。后端

从项目经验中“掘金”

今年暑假留在了学校,导师布置了个项目,并充当提出需求的客户和前期设计的分析师,团队四我的参与整个项目的生命周期。因为没有经验及技术不成熟,整个过程是边学习摸索着边推动。但暑期结束了也没大进展,于是项目只能被搁置了。不过今后次经历中学习到了不少知识,同时也总结了项目推动失败的教训。设计模式

转变开发方式

项目开始前,导师给咱们讲述许多关于软件开发的问题,其中提到了“基于领域驱动”的软件设计模式。同以往课设项目围绕着“数据库”进行开发不一样,基于领域驱动的开发注重领域的知识,领域模型更加符合天然系统,而围绕数据库开发只会将重心偏移到数据的设计和处理。前端工程化

惋惜的是,早先没有基于领域驱动开发软件的经验,以致于暑假项目上的前期分析仍是以往的方式。下半年拜读《领域驱动设计》后,对软件开发方式有了不一样理解与体会,同时也将该开发方式应用在一门课设上。架构

项目失败的教训

这次项目失败有技术缘由也有工程上的问题,但主要仍是败在工程问题上。框架

在项目架构选择上,犯了很大的错误,选择过于激进的微服务架构。因为项目的复杂程度,还不至于使用该架构,致使对项目的划分粒度过细,就像是为了微服务而微服务。并且这致使了维护成本变高,因为划分过细,修改一处就得从新改写其它关联的部分,固然这也与前期设计不当脱不了关系。最后,因为种种问题放弃了还不熟悉的微服务架构,转而使用传统的单块架构。前后端分离

这次项目,采用了先后端分离的开发方式,但先后端测试成了问题。最开始使用原始的手工测试,测试很是耗时间,并且有时候难以判断错误发生在哪一端。因而,后来采用了替身测试,前端使用 Mock.js 框架模拟接收到的数据,然后端使用 JUnit 框架模拟发送的请求。虽然解决了先后端测试问题,但开发中接口的统一,就只能靠传递定义接口文档实现。

框架的优秀思想

这个项目的后端用到了 Spring 框架,前端用到 Vue.js 框架,这两个框架都十分优秀且其设计思想回味无穷。

模块解耦

首先,很是欣赏 Spring 框架解决软件复杂性的思想,并且让我了解到原来模块能够这么解耦。

Spring 框架经过依赖注入来解决模块间高耦合的问题,框架负责代码模块的依赖,就像是代码模块的粘合剂。且其低侵入的特性,使得编写代码时基本无需考虑框架的存在。

数据驱动视图

大一也曾接触过 Vue.js 框架,老师让我用其作个登陆演示页面,因而花了两天阅读了官方文档,草草作了个演示。当时只以为其写法很奇怪及别扭,并无过多的思考。

上半年作 Oracle 数据库课设时,用手动修改 DOM 来实现视图变化,但当项目变得复杂时,代码也会变得很是难维护。而 Vue.js 框架的优秀之处在于,让数据驱动视图的变化,从而不须要手动修改 DOM ,下降了数据与视图关联的复杂性。

从新接触前端

因为项目须要,又从新接触了前端。虽然清楚前端这几年发展迅速,但当真正接触时,更是惊叹其巨大变化。

学习成本变高

如今编写前端工程,不只须要掌握最基本的 HTML 标记语言、CSS 样式表和 JavaScript 脚本语言,还得搭建 Node.js 环境及会使用依赖包管理工具 NPM,同时会配置使用例如 Webpack 之类的构建工具。

掌握了上面这些,还得学习一个热门的框架,例如我使用的 Vue.js 还有基于此的前端界面库 ElementUI 。学习这些内容的成本是很高的,并且上面提到内容,还只是整个“大前端”的冰山一角。

前端工程化

前端的学习成本随着其发展不断增长,而前端发展的同时也使其复杂性增长,因而就有了“前端工程化”一说。前端工程化同软件工程为了解决软件复杂性同样,首要任务是为了解决前端的复杂性。

前端工程化涉及诸多方面的内容,因为篇幅有限,只阐述我认为的核心内容。首先一个是,强调前端工程进行组件化开发,同模块化用于封装隔离不一样,组件化更强调复用,一个很好的例子即是 Vue.js 的模板文件。还有即是规范化的开发,项目须要考虑语言规范、编码规范、项目结构规范等等方面,而这些也有利于团队的开发与维护。

寄望 2019 年

今年算起,入门也大概有六七年头了吧,如今本身的境遇是涉猎广但深度不够,因此计划明年着重研究大数据计算方面。同时,但愿明年 ACM 比赛能有个好成绩,不会像今年同样只是去走个过场。还有,继续练好本身的写做水平。

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息