这两年

看书时重新审视了一下这两年

2023-03-13 · 阅读时间: 10 分钟

这两年

今天看了《领域驱动设计-精简版》,看序论提到的一些事情,感慨万千。想到了这两年工作上的许多事情。

2021年2月,我加入现在这家公司。当时加入时是奔着名字来的,我以为我做的业务和公司名称有相关性,后来证明至少我所在部门和公司名字毫无关联。

从上一家公司离职找工作时,也应聘了很多家公司,面试最后总有一个环节,是问你有没有什么问题,我每次都会问面试官一个问题,公司会有技术分享吗?团队内会做技术分享或者开发之间会做技术交流吗? 我其实是想通过这个知道公司的技术氛围,知道自己是不是可以学到很多技术上的东西。绝大部分公司都会回答有各种形式的技术分享,包括现在的公司。实事求是地说,技术分享确实是有,但是确实稀碎。

除此之外,最重要的还是项目方面。

来了公司之后,先后做了国网、海天、奇瑞、丰智云链、新疆跨境电商、中石化、华大基因项目,做的项目很多,但是都千篇一律。重要的是,缺少积淀。这些项目基本上都衍生自saas版本,虽然迭代时间不长(公司成立才5年多,项目自2020年初开始开发),但是却历经多人之手。

项目里,开始时候大家都把所有的mybatis生成的xml文件放到一个common包里,项目都引用这个包,如果有数据库字段的更改,则需要common包重新修改。这样看起来项目做了微服务拆分,但是在实际访问数据时候,大家都用common包里的xml直接进行数据库的操作。后来又做了彻底拆分,不再使用这个里面的xml访问数据库,但是又大量引用了里面的entity,搞得修改表结构很麻烦。我感觉这个就是书里提到的,没有遵循“概念完整性”(实际上是人月神话里提到的)。

今天读到第一章(我读得很慢,就地铁上读书),关于瀑布式开发和敏捷开发,里面描述了团队成员写代码时候的困惑,担心过度设计等,我想到了这几年写代码时候的困惑,究竟该如何设计,要用设计模式来套吗?用哪种设计模式应该如何选择,有什么衡量标准,有什么优点?平时用最多的就是MVC分层和策略模式了,但是对于这两种模式我也有很多困惑。有很多时候mvc分层变成一种形式主义,这时候要不要分层?而有时候仅仅这三层又还不够,这时候应该如何分层比较好?

甚至有很多时候,关于代码复用,方法传参以及返回值类型的选择,我都会很纠结,究竟应该如何做会比较好呢?

也许一切一切都是因为看书少了,看优秀代码少了,思考太少了。

也许看完《设计模式》,看完《Java高性能编程》,看完《阿里巴巴技术规范》,看完《重构:改善既有代码的设计》,看完《DDD》会有概念,再看一些优秀的代码设计会有答案吧。

另外,仔细想想,这几年做的项目,一直在堆代码,还没有真正做过重构。

再次回顾这几年的职业生涯,第一份工作,刚刚参与没多久的时候,就独自负责了一个叫“内部管理系统”的子系统,当时使用拖拉拽的组件开发,几乎没有思考过这些问题。同样第一家公司的第二个项目,是个银行的内部OA系统,高度封装,做的事情也比较简单,想想当时好像也没有重构的心思。第二家公司我做的项目参与就比较深入,这个也是思考比较多的项目。是一个支付路由系统,主要是对接各种银行和第三方支付平台。到现在印象也比较深,改天想想如果再做要怎么优化这个系统。再后来就是现在的公司,算是一个闭环的供应链系统吧,oms、tms、bms、wms等都有。这个也改天思考下如何重构。