Skip to main content

脫離重構的輪迴

 在最近開發的過程中,發現了每次增加新的 feature 就要來重構,想要歸納一下每次我在做的事情。

我想我每次重構的心得如下:

  1. inner static class 最後好像還是會被抽取出來
    1. 在一開始,必然是先用簡單的變數組合來代表某一觀念。
    2. 然後會組成 static class ,概念是不必要讓這個類別暴露給其他類別知曉。
    3. 然後在功能越加越多的時候, static class 一定會被獨立出來。而通常有兩個原因:
      1. static class 變得過大。如果一個 inner class 的內容與他的 outer class 內容差不多多的話,那還是不要放在一起喧賓奪主了。
      2. static class 會被第三個類別存取。在這種情況下,當初的封裝變得多此一舉了。
    4. 那也許一開始就不要用 inner class ?
  2. Strategy Pattern 終究會被引入
    1. 在一開始通常沒有這需求,等到差異性顯現出來時,不抽成抽象方法而是使用 interface 作為參數傳入。
    2. 這在美感上也比較討喜,將兩件權責劃分開來,測試的時候的排列組合更少。(個人想法)
  3. 終究會抽出更多短方法。
    1. 在一開始寫的過程中,總會覺得這段邏輯抽成方法太冗。
    2. 但在重構的時候,卻又反而會覺得他不易理解。
    3. 「不要輕易相信自己的記憶」?同一段程式碼在過一段時間回頭看仍需要重新理解它?
  4. static / non-static 來回切換。
    1. 在最後總有些東西好像擺在 static 也行  non-static 也不錯,這時候會經歷來回切換的時期,不過或許在更之後,重新審視就會覺得這個東西應該是無懸念的  static 或 non-static。
  5. 方法的參數過多,通常會被拆開。
    1. 這個確實就是所謂的壞程式碼的味道,幾乎一定會需要被拆開。
  6. 盡可能地多命名。
    1. 這跟第三點很像,每次回來還是需要重新理解,所以第二次第三次回來看的時候,都會再給所有暫存變數更好的名字。
  7. 終究第一次取的名字就是不好,第二次的也差不多活不久。
    1. 在新暫存變數、新功能引入的時候,不免會有與現有命名重疊、或不一致的情況發生。所以第一次和第二次的命名大概以後都會被爆改。
  8. 終究會引入 stream。
    1. 有時候只是沒有把判斷式寫成方法,就直覺得寫 for loop ,但重新回頭看,用 stream 這樣有點 transcation 概念的解決,總是令人比較安心。
  9. 複雜的 for loop 終究會被改動。
    1. 如果一個流程要參照複雜的狀態追蹤,這些狀態最好還是可以寫進 for loop 的三個區塊中。
    2. 這個不是必然要做的事,但就我的個性來說是必然。
  10. lombok 要用。
    1. 這不用多說,拯救人類的時間的救星。
先這樣,之後有更多心得再寫。

把這些東西寫下來,是因為我意識到我常常會覺得「我重構還做得挺不錯的呀!」,但這樣似乎不是好事情。不好的地方不是「我做的挺不錯的」,而是「常常」,畢竟重構還是花時間的。我喜歡那種「這程式碼還真是無懈可擊,so neat,多一行太多,少一行不行」的感覺,所以我對重構並不排斥。但想想我終究愛的還是那整潔感,而不是打掃的過程。

這些我在重構的時候做的事情,如果可以在第一次寫的時候就完成,那感覺還挺好的。

Comments

Popular posts from this blog

產品化這件事

在做產品的時候,才意識到前處理和後處理的重要性。也就是說,模型在成本的考量下應該不會是完美的。如果以前就了解這點的話,也許當初當兵的時候遇到的動線和計數問題,就可以好好想一個可接受的解法了呢。

關於我讀過的偵探作品

趁著剛剛寫完 Another 的觀後感,來寫一寫讀過的偵探作品們。 前一篇有提到,大學的時候有機會做日本偵探小說的流派的報告,卻沒有把握機會好好了解。那這次看了 Another 這個綾辻行人的作品,也算讓十年前的未竟續上了一些補完。而因為提到「我也讀過一些偵探小說」這句話,讓我趕快去查了下我讀過的小說。 一開始進到我腦海裡的是福爾摩斯的叢書,還記得小時候爸爸媽媽帶我到東海大學的敦煌書店裡面看書,那時就看到了福爾摩斯,對於偵探這個概念覺得又神祕又帥氣,並且覺得墨綠色的封底的小說,整潔與莊重感湧現,便讓媽媽為我買了這本書,記得是「血字的研究」。或許就是這個時候開始喜歡書擺在眼前、拿在手上的感覺吧。但福爾摩斯並沒有怎麼激起我推理的天賦,我當初直到現在都還是用一種讀冒險小說的心情去讀的。當然,謎底解開的時候的舒暢的感覺是蠻喜歡的。小時候後來也收了很多同系列的福爾摩斯的書,我有意識到我好像是在收集整套叢書,我喜歡他有質感的封面設計還有排起來的充實感,而不是真的熱愛推理小說。XD 另一套書進到我腦海的是, 赤川次郎的「糊塗偵探迷推理」(或「大貫警部」)系列,由希代出版社出版(寫這篇文章的時候,完全不記得書名和作者的名字,只好從維基百科的日本推理作家列表開始一個一個看。)。在搬家前,家裡有這麼本書,大概是爸爸買的,我一直沒有跟爸爸確認過。同作者的書,家裡也有三色貓系列,但我沒讀過。總之這本書裡面收錄了,謎題漫畫(起承転結殺人事件)、搖滾殺人(満員御礼殺人事件)、攝影蒙太奇(四苦八苦殺人事件)。在小時候的時候,就這麼一本反覆看了好幾次,並不是享受推理的樂趣,而是單純的喜歡作者的輕鬆詼諧筆法和活靈活現的逗趣人物,記得戀愛的橋段也讓我蠻喜歡的。 後面的其他日本推理小說,我是查了維基百科才知道原來有些現代作家的作品也是推理小說,我還以為大部分會是我沒讀過的經典作品。聊列讀過的作品如下,幾乎都是青少年時期、高中的時候讀的: 我孫子武丸 殺戮之病 伊坂幸太郎 死神的精確度 西尾維新 DEATH NOTE Another Note 洛杉磯BB連續殺人事件 乙一 GOTH 斷掌事件 大澤在昌 新宿鮫.新宿鮫 Ⅰ 小野不由美 黑祠之島 (我才知道原來綾辻行人是小野不由美的丈夫。XD 做這些記錄很不錯,那也是我曾經燃燒興趣的所在。 這些書,可以想到基本上都是封面做得很漂亮,我以前的時候真的是很看封面...