嗨,我叫 MickyTsai,是個年近四十決定半路出家轉職為軟體工程師。這裡是我的轉職歷程日誌,也是我寫 code 的一些開發日誌。
前情提要
在經過第一週的洗禮後,腦袋的混沌狀態好像有好一些,大腦在想程式架構上好像有那麼一點應該怎麼打基底概念(應該吧)。小專題很能體認到我們 class 好像只是在做資料夾分類而已,但實際上裡面該寫什麼屬性跟方法還是相當不合邏輯(但跑得起來 XD)。
當你腦袋中有越多熟知的工具(像是 ArrayList、寫法、內建 class 的各種方法),寫 code 速度就會天差地遠。Stan 寫一小時,我們大概要寫六小時(九成時間在想⋯),這才造成好像專題加上作業,我們就算待到晚上十二點都寫不完。記住並熟練寫法真的好重要!(工具的重要性)
遇到的困難:小專題的升級狀況與龜速進展的作業
- 小專題前次發表後,原本是進入戰鬥就直接跑到打完(回合連續),現在要改為每回合都能再次選擇(逃跑/戰鬥/使用道具)。原本以為就只是將戰鬥迴圈取消就好,結果發現會有像是第一下被打死,進入無窮迴圈被打的狀況。
- 新增地圖,本來是兩個地圖,只要通關,將變數設為另一個就好;但當變成三個時,變成要三個隨機取一,然後剩下兩個取一,這整個就卡住了。
- 新增商店,買賣功能比較沒問題,但狀況是這個商人在一個地圖只會出現一次,如何將商人已出現過就排除隨機事件項目中?
- 新增技能且有冷卻時間,道具效果也有冷卻時間。主要是技能打完一個怪,全部冷卻清空,但道具是看戰鬥的回合數,兩者判別方式不太一樣。
目前如果可以知道要用什麼寫法的作業,影片也能看懂的話,大概也還是要花 4~6 小時寫完(像是介面練習、商品管理系統、介面、lambda、建造者)。但如果是開放的寫法(像是史萊姆),好像介面可以、好像 enum 也可以、好像要一起用?但會卡到像是 enum 寫技能,可以知道如何去用這個技能的方式了,但如何三個技能只取二,而技能又分傷害技能(有 return 值)和治療技能(不用 return 值),在隨機釋放時如何判斷,就又卡住了一整天寫不出來。
這週其中一個作業(骰子遊戲)是小組一起討論、一人寫。效果覺得算是不錯,感覺在互相說明自己的想法時,也在整理對於寫法的理解。別人的想法有時也會有「竟然有這種作法」的感覺。骰子遊戲本來看到題目是沒什麼概念的,在討論的過程,反而能要求自己更要一步步把問題拆開來做,因為一步跨太多,我也不知道怎麼解釋;但反而這樣一步步走,意外進行得比較順利。
如何排除問題
- 第一次很有自信地將無窮戰鬥迴圈拆開來,並且覺得在每回合戰鬥後插入戰鬥選擇、判斷是否雙方有一方死亡就好,自顧自地修改。一跑起來就發生被無窮打、訊息重複出現、死後還有戰鬥選擇等等狀況。自己一步步看程式碼又感覺好像沒錯,那邊修一下、這邊修一下,總是修不好。最後是將一次戰鬥整個流程畫出樹狀圖,才發現樹狀圖內有些狀況根本沒判斷到,也比較清楚知道哪邊要修。修起來比較知道自己在幹嘛,才順利修正完成,測試結果也沒問題了!
- 本來兩個地圖在 Main Class 中各自一個無窮迴圈,但是導致整個程式碼非常長。Stan 說過,發現總是複製貼上時就要知道這不是好的寫法(不斷重工),於是只保留一個地圖迴圈,裡面差異的地方就用變數去判斷控制,第三個地圖也就加上判斷條件就好,縮短整個程式碼長度。
- 史萊姆作業已經花了一整天,嘗試 enum、介面等等方式,實在很挫折,明明影片都看得懂。但也發現又開始犯了想到啥就嘗試啥的老毛病。要求自己再次拆分為小問題,再試看看。
課程進度
- 內部類別
- 匿名內部類別
- lambda
- 列舉 enum
- coding style
- 學習 Git
- 資深工程師演講:分享現實工作中處理專案的流程、狀況與方式。
- 感覺應該會在期中、期末專案用到,小專題時間太短。
- 對於未來可能的工作環境、生活,有一個雛形想像,但覺得還有點遠。
- 比較能現在用到的應該是 code style 的養成,畢竟壞習慣做久了就難改,從我們一開始寫 code 就該開始遵守。
每次來教室的時間真的像進入精神時光屋,大腦不斷在想解法,時間一下就過了。其實進入這種不斷思考而忘記時間的狀態我是喜歡的,但也有些挫折:為何花這麼多時間還是沒有進度,甚至重來?影片有沒看懂的地方嗎?這是不是個蠢問題?我是不是再找一下就會了?等等迴圈當中。
小專題比較有進度,每次跑起來測試能有新功能實在都很感動啊 XD。