技術債 軟體開發

💸還技術債的藝術 II – 一魚多吃,除技術債同時提升效能

本篇文章是 💸還技術債的藝術 I 的續集,沒看過的觀眾建議先連過去看看。 漫無目的從 Code base 找技術債並不是個聰明的作法,雖然這麼做你一定能馬上找到數十個技術債的嫌疑犯,但很可能他們都是清白的,就像是在路上隨機抓人就懷疑他犯法一樣,我不會說這個方法完全無效,只是它相對會花上更多時間。 怎麼做才是有效率的呢? 這個時機很簡單,你開發新功能的時候。 當你開發新功能時多多少少會接觸到原有的程 […]…

軟體開發

💸還技術債的藝術 I – 消除對技術債的傲慢與偏見

你是否也有接手過別人程式碼的經驗? 無論是加入新的專案或是工作環境,我們都有很大的機會承接這些遺產。作為一個新進成員,在閱讀舊有程式碼時難免會有許多疑問。 為什麼這裡會這樣寫? 為什麼這裡會需要這樣的 Workaround? 為什麼這裡要這樣設計? 為什麼會寫的這麼差? 『全部重寫好了?!』 難免會這樣想。 為什麼會有技術債? 請先等一等,思考為什麼這些技術債存在?也許是下列幾種原因: ̵ […]…

iOS 讀書筆記 軟體開發

錯誤處理之斷言 Assertion – 不要亂用我設計的物件

錯誤是很抽象的字,廣義來說所有不在預期內的結果都算是某種”錯誤”。 接下來會分兩三篇文章來分享最近所學到跟錯誤處理相關的議題,話不多說我們開始吧💪 斷言(Assertion) 是一種條件式檢查語法,當現行狀態不合乎條件時會強迫終止程式。 斷言只用在標示一些邏輯上不可能或不應該出現的情形,若上述情形真的出現時,表示有些基本架構已出現問題。 — wiki 斷言 為什麼會需要斷言 當程式碼執 […]…

讀書筆記

讀書筆記:A dependency injection kind of guy

內容來自 SwiftBySundell 的廣播節目第20期 這次的特別來賓是 Radek Pietruszewski software writer at Nozbe and creator of SwiftyUserDefaults 他說自己是 software writer 而不是什麼厲害的架構是,因為他不認為自己真的弄了什麼厲害的架構,而只是認為自己寫的程式碼是讓人讀的,所以稱自己為 wri […]…

軟體開發

蘋果 Go to fail

即便是蘋果也犯過低其錯誤 Anatomy of a “goto fail” – Apple’s SSL bug explained, plus an unofficial patch for OS X! hashOut.data = hashes + SSL_MD5_DIGEST_LEN; hashOut.length = SSL_SHA1_DIGE […]…

軟體開發

重構:消除隱藏的依賴關係

不可測試的程式碼就像是沒打掃的房間,可能玩具散落一地,又或是不穿的衣服堆得亂七八糟。 想像你的每一個類別(Class)就是房間,可能有的很小容易打掃,有的很大不容易保持乾淨。隨著你的產品(Project)房子愈來愈大,房間愈來愈多,要整理乾淨就愈難。很多人甚至就不打掃放任專案慢慢發臭,輕微一點導致 bug 開趴,嚴重一點則導致開發新功能困難舉步維艱。 今天讓我們來看看一個例子 HBBeePoint […]…

未分類

招募與被招募

招募是一體兩面的,你在面試公司,公司也在面試你。 招募的核心是在有限時間內評估面試者是否適合加入團隊,也就是要先能認識面試者才能評估他是否合適。 首先我們必須認清一個事實,要在短短一兩個小時內了解一個人是不可能的,所以面試前的情報收集就格外重要。能收集到愈多關於面試者的資訊就能愈瞭解該面試者,反之收集資料愈少就是愈依賴面試者提供給你的資訊。關於面試許多人會只看到表面上的三個階段分別是準備履歷、投履 […]…

Xcode

顯示 Xcode build 時間

在 Terminal 輸入 defaults write com.apple.dt.Xcode ShowBuildOperationDuration -bool YES 重開 Xcode 之後就會顯示 Build time Reference http://tonyarnold.com/2016/04/20/xcode-build-duration.html…

軟體開發

我在KKTOWN的小故事 – 省下一個月開發時間

雖然 KKTOWN 最終落幕了,但從中學到很多經驗是珍貴的,如果不記下來不是太可惜了嗎? KKTOWN 第一個物流系統商是全家,在系統順利銜接後,我們向全家提出一些行銷的想法,當使用者用 KKTOWN 到全家寄貨,全家會送一杯免費咖啡給他。 怎麼送? 我們 PM 設計整個流程與完整功能,預告接下來的一個月以這個行銷活動為主,連 Wireframe 都畫好了。 我問說:『這樣的功能我們會用到幾次? […]…