34

在公司做的项目和自己在学校做的有什么区别?

 4 years ago
source link: https://www.tuicool.com/articles/uu2Abqa
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

前言

只有光头才能变强。

文本已收录至我的GitHub仓库,欢迎Star: https://github.com/ZhongFuCheng3y/3y

不知道大家还是学生的时候有没有这个问题: 公司做的项目和自己在学校练手的项目有多大的区别 。我以前在学校跟着视频做一些项目练手,总感觉公司做的东西会要难很多,不知道跟公司的真实项目区别在哪。

总的来说,我实习的总时间也快半年了,谈谈我觉得公司项目和自己练手的项目有啥区别,欢迎补充。

一、区别

在视频练的项目大多数都是由讲师在 本地 编码来讲解整一个项目的开发过程,而我们去到公司做的第一件事是啥?把项目clone(checkout)到本地来看。

这就有两个区别:

  • 去到公司往往 不是从零开发一个项目 ,项目的框架和代码都已经写好了。我们更多要做的就是 迭代 这个项目(或者说修复这个项目原本就有的Bug)
  • 一个项目往往都会有几个人进行开发,这就肯定要用到 版本管理工具 (SVN/Git)。所以,去公司做项目之前最好是提前去学学Git/SVN这些工具的使用

比如说,我们使用Git的时候,要修改代码的时候会新建一个分支,改完了再合并到master分支上。

好了,现在项目已经在本地上了,那我们要将项目 在本地上 启动起来吗?这得 问同事 。在公司做项目,一般都分了好几个环境

  • 线上 (现在正在给用户用的)
  • 测试 (写完功能,先看一下在测试环境下有没有问题,没问题才发布到线上环境)
  • ...等等(可能名字叫起来不一样,但不可能在本地上写完的代码直接就放到线上去跑了)

有的时候,可能环境过于复杂(各种系统相互依赖),clone(checkout)下来的项目就很难在本地上启动起来,或者说在本地上的数据跟线上的数据差距太大了(比较难看出效果)。所以,有的时候 可能 就不用在本地将项目启动起来。

那问题来了,我写完的代码怎么调试啊?我们可以这样干的:将本地写好的代码 push 到测试环境,然后本地 远程连接 测试环境,对其进行调试。

VRzy6jr.jpg!web

还有,我们自己做项目的时候, try-catch 完了之后,习惯可能就 e.printStackTrace();

EzaUFrB.jpg!web

但公司的项目不会有 e.printStackTrace(); 这种代码的存在。因为这打印出来的错误信息 没有日期、等级 等等,分析起来不方便。

bMZ3uin.jpg!web

在公司一般将错误的信息(或者有用的信息)写到log( 日志 )中。

  • 比如说: LOG.error("send java3y article failed, {}", e);

于是,一般出现了问题,我们先去登上机器,查一下 日志的信息 是怎么样的。而登上线上的机器上,也 不是直连 的,会经过一层 堡垒机 。堡垒机是做啥的?

AzqyaaB.jpg!web

每次登录线上的机器都要ssh xxxxip 到堡垒机上,然后再到堡垒机上输入线上机器IP连接,着实麻烦。于是大佬们就会写 自动登录堡垒机 ,直接输入IP到线上的脚本

于是乎,我们就登录到堡垒机上,然后再连上线上机器就去查看日志了。查看日志怎么看?

还有一点就是,在公司开发都要申请权限才能对数据库/机器/各种资源进行操作。而不像我们个人开发各种root权限,数据库各种DDL/DML随便玩。

DML/DDL数据库操作都要申请权限,发布代码到线上也要申请权限,想要去线上的机器上查看日志也要权限.....

最后

总结:

  1. 版本控制工具
  2. 远程连接Debug调试
  3. 不再使用 e.printStackTrace(); ,而是 log.error() 来替代
  4. 各种权限都需要申请和审批

乐于输出 干货 的Java技术公众号: Java3y 。公众号内 有200多篇原创 技术文章、海量视频资源、精美脑图, 关注即可获取!

m2AzYfb.jpg!web

觉得我的文章写得不错,点


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK