1. 程式人生 > >專案維護總結——為什麼這麼累

專案維護總結——為什麼這麼累

大家一提到程式設計師,首先想到的是以下標籤:苦逼,加班,熬夜通宵。但是,但凡工作了的同學都知道,其實大部分程式設計師做的事情都很簡單,程式碼CRUD可以說毫無技術含量,就算什麼不懂依葫蘆畫瓢很多功能也能勉強做出來,做個多執行緒併發就算高科技了,程式設計師這行的門檻其實還是比較低的。(這裡說的是大部分,有些牛逼的,寫演算法、jvm等的請自動跳過)。

是不是覺得很矛盾,一方面工作不復雜,一方面卻累成狗。有沒有想過問題出在哪裡?有沒有想過時間都花在哪裡呢?

大家寫的東西都是一些crud的業務邏輯程式碼,為什麼大家這麼累,加班加點天天都是奮鬥者?我從自己帶的專案中觀察中發現,大部分人的大部分時間都是在 定位問題 + 改程式碼,真正開發的時間並不多。

定位問題包括開發轉測試的時候發現問題和上線後發現問題,改程式碼的包括改bug和因為需求變動修改程式碼。

因為最近在維護一個專案對於程式碼的質量有了很大的反思:前期系統不穩定會出現很多問題,簡單的問題很好解決,大部分的都是程式碼強壯性問題,一天可能解決好幾個問題(時間大部分都在定位問題,改程式碼的時候相對於定位問題少的多【僅限於解決當前問題,不包括程式碼重構】),如果沒有一個好的程式碼習慣,你會發現定位問題的時候,最想做的一件事就是打死那個程式設計師。所以說,simple is not easy。很多人就是因為覺得簡單,所以功能完成自己測試ok了就算了,沒有思考有沒有更加好的方式。歸根到底是因為編碼習慣太糟糕,寫的程式碼太爛,導致無法定位頻繁修改頻繁出問題。

其實,對於個人來說,技術很重要,但是對於工作來說,編碼的習慣比技術更加主要。工作中你面試的大部分技術都不需要用到的。工作中,因為你的編碼習慣不好,寫的程式碼質量差,程式碼冗餘重複多,很多無關的程式碼和業務程式碼攪在一起,導致了你疲於奔命應付各種問題。

不管接手任何專案組,第一步就是制定程式碼框架,制定專案組的開發規範,把程式碼量減下去。事實上證明,這一步之後,大家的程式碼量能下去最少1/3,後臺的問題數下降比較明顯,大家的加班會比之前少,這樣對於公司的開發資源也節省了一大筆。

好的習慣讓你事半功倍。

給大家一個直觀的例子。下面是controller的一個刪除資料的介面,我來之前大家寫的這個樣子的(其實一開始比這個還差很多),功能很簡單,輸入一個物件id執行刪除返回是否刪除成功。大家有沒有覺得有什麼問題?

@PostMapping("/delete")
public Map<String, Object> delete(long id, String lang) {
  Map<String, Object> data = new HashMap<String, Object>();

  boolean result = false;
  try {
    // 語言(中英文提示不同)
    Locale local = "zh".equalsIgnoreCase(lang) ? Locale.CHINESE : Locale.ENGLISH;

    result = configService.delete(id, local);

    data.put("code", 0);

  } catch (CheckException e) {
    // 引數等校驗出錯,這類異常屬於已知異常,不需要列印堆疊,返回碼為-1
    data.put("code", -1);
    data.put("msg", e.getMessage());
  } catch (Exception e) {
    // 其他未知異常,需要列印堆疊分析用,返回碼為99
    log.error(e);

    data.put("code", 99);
    data.put("msg", e.toString());
  }

  data.put("result", result);

  return data;
}

其實上面的程式碼也沒有大問題。而我接手之後,我會開發自己的程式碼框架,最後制定程式碼框架交付的程式碼如下(這是controller的部分):

@PostMapping("/delete")
public ResultBean<Boolean> delete(long id) {
  return new ResultBean<Boolean>(configService.delete(id));
}

用到的技術就是AOP,也不是什麼高深技術。怎麼樣?程式碼量就一行,特性一個都沒有丟。這就是我們專案組現在的controller的樣子!