在公司做的項目和自己在學校做的有什么區別?


前言

只有光頭才能變強。

文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/ZhongFuCheng3y/3y

不知道大家還是學生的時候有沒有這個問題:公司做的項目和自己在學校練手的項目有多大的區別。我以前在學校跟着視頻做一些項目練手,總感覺公司做的東西會要難很多,不知道跟公司的真實項目區別在哪。

總的來說,我實習的總時間也快半年了,談談我覺得公司項目和自己練手的項目有啥區別,歡迎補充。

一、區別

在視頻練的項目大多數都是由講師在本地編碼來講解整一個項目的開發過程,而我們去到公司做的第一件事是啥?把項目clone(checkout)到本地來看。

這就有兩個區別:

  • 去到公司往往不是從零開發一個項目,項目的框架和代碼都已經寫好了。我們更多要做的就是迭代這個項目(或者說修復這個項目原本就有的Bug)
  • 一個項目往往都會有幾個人進行開發,這就肯定要用到版本管理工具(SVN/Git)。所以,去公司做項目之前最好是提前去學學Git/SVN這些工具的使用

比如說,我們使用Git的時候,要修改代碼的時候會新建一個分支,改完了再合並到master分支上。

好了,現在項目已經在本地上了,那我們要將項目在本地上啟動起來嗎?這得問同事。在公司做項目,一般都分了好幾個環境

  • 線上(現在正在給用戶用的)
  • 測試(寫完功能,先看一下在測試環境下有沒有問題,沒問題才發布到線上環境)
  • ...等等(可能名字叫起來不一樣,但不可能在本地上寫完的代碼直接就放到線上去跑了)

有的時候,可能環境過於復雜(各種系統相互依賴),clone(checkout)下來的項目就很難在本地上啟動起來,或者說在本地上的數據跟線上的數據差距太大了(比較難看出效果)。所以,有的時候可能就不用在本地將項目啟動起來。

那問題來了,我寫完的代碼怎么調試啊?我們可以這樣干的:將本地寫好的代碼push到測試環境,然后本地遠程連接測試環境,對其進行調試。

遠程Debug

還有,我們自己做項目的時候,try-catch完了之后,習慣可能就e.printStackTrace();

萬能的e.printxxxx

但公司的項目不會有e.printStackTrace();這種代碼的存在。因為這打印出來的錯誤信息沒有日期、等級等等,分析起來不方便。

分析起來不方便

在公司一般將錯誤的信息(或者有用的信息)寫到log(日志)中。

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

於是,一般出現了問題,我們先去登上機器,查一下日志的信息是怎么樣的。而登上線上的機器上,也不是直連的,會經過一層堡壘機。堡壘機是做啥的?

來源:https://www.zhihu.com/question/21036511

每次登錄線上的機器都要ssh xxxxip 到堡壘機上,然后再到堡壘機上輸入線上機器IP連接,着實麻煩。於是大佬們就會寫自動登錄堡壘機,直接輸入IP到線上的腳本

於是乎,我們就登錄到堡壘機上,然后再連上線上機器就去查看日志了。查看日志怎么看?

還有一點就是,在公司開發都要申請權限才能對數據庫/機器/各種資源進行操作。而不像我們個人開發各種root權限,數據庫各種DDL/DML隨便玩。

DML/DDL數據庫操作都要申請權限,發布代碼到線上也要申請權限,想要去線上的機器上查看日志也要權限.....

最后

總結:

  1. 版本控制工具
  2. 遠程連接Debug調試
  3. 不再使用e.printStackTrace();,而是log.error()來替代
  4. 各種權限都需要申請和審批

樂於輸出干貨的Java技術公眾號:Java3y。公眾號內有200多篇原創技術文章、海量視頻資源、精美腦圖,關注即可獲取!

轉發到朋友圈是對我最大的支持!

覺得我的文章寫得不錯,點


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM