想起程式

人是一根會思考的蘆葦

2017-06-19-AppDelegate

iOS App Delegate

在所有專案中,App Delegate 代表的就是程式的開頭(不考慮系統層,只觀察應用端)。系統所提供的方式只是一個 sync 的 callback,所以原則上你沒辦法阻止系統要你的應用程式在各個可能的狀態間轉移( active / inactive / background / termiate ),這是合理的,但是實務上卻有令人煩惱的地方 async function 上個狀態的事情還......

Tastable

Tastable

所以維持程式的穩定是我們目的,實作測試碼是我的方法。 過去在 ObjectC 上有很方便的方法 method swizzling,因為語言的特性,可以直接動態替換掉 method, 但是在 swift 上,就不能這樣做了! 而是要在寫程式的一開始,就要設計整個架構,讓他是可以測試的。 接續著 2017-04-19 中的例子,考慮測試範圍是自己寫的邏輯部分,進而重新定義題目: 我要實作一個讓......

測試範圍

測試範圍

而哪些程式碼是需要被測試的呢? 理想上,只要是自己寫的就需要測試 像是 System function、3rd party library 應該就不需要為他們寫測試碼。 也就是說,我們會寫了一堆程式碼,來整合 System function、3rd party library 來實踐服務 所以我們會需要驗證服務的邏輯是否正確,而使用到的「工具」的反應是否正確,就不是我們要關心的。 因此,功能......

無法實踐的測試(2)

無法實踐的測試(2)

進行中才慢慢發現了許多無法馬上克服的問題 舊的程式碼 (legacy code) 無法測試 一般的書或教學,教的是如何為一段新的程式碼寫新的測試碼。但是當一開始觀念不好時,所寫下來的程式碼,要為他們加上測試碼時,往往會遇到相依性太大的問題。 程式資料/變數無法有效的重新設定 reset 初期,往往會用最直覺的方式去操縱 File System 用來儲存資料或變數,但這樣會造成測試上的......

無法實踐的測試(1)

無法實踐的測試(1)

首先,要先清楚 UnitTest 的定義 單元測試,是單一功能的測試 如果是跨到一個以上的模組,則會稱呼為整合測試 一般來說,會希望功能開發工程師對自己的開發功能寫下單元測試, 而軟體品質工程師則是對最終功能進行整合測試 概念上的宣揚是很簡單的事情,但實際上為什麼做不到呢? 一般會認為主要的原因是, 因為要寫測試 code,所以開發時間變成兩倍,但是台灣一般公司的專案管理不會讓你有兩倍......

難題

難題

專案的功能少,其實人力很容易完成所有重複性質高的工作 當專案的功能越來越多,功能與功能間的交互影響也可能越來越大,所造成的情境也會倍數增加。 例如: 使用者登入 Yes / No 是否有權限使用 Yes / No 裝置是否支援 Yes / No 有沒有網路資料 Yes / No 如果功能間相互獨立,那就會有 2 x 2 x 2 x 2 = 16 種可能的使用情境 如果一種情境要測試一個人/天......

重新學習

重新學習

過去以為自己有符合某些概念 但是在實作新物件、refactor、寫 Testing Code 的過程中才發現更多的問題 例如: 一個處理號碼 (phone) 資訊的物件,他可以提供號碼物件給其他 manager or ui 使用,也可以透過網路更新本身的資料。 過去我可能就會寫一個 PhoneInfoManager 裡面有很多的 PhoneInfo,然後這個 Manager 內有一個 u......

程式語言其實應該要被歸類成文學

程式語言其實應該要被歸類成文學

我們常會說,我懂英文、會講英文,但是講的好不好、文法對不對,對於每個人來說就不一定了。 「講一個句子和用單字拼出意思一樣都能溝通」 程式語言也差不多,我懂程式、會寫程式,但是寫的好不好、文法對不對,則就看每個人的功力了。 「寫的很精鍊或很平鋪直述一樣都能讓功能有作用」 要有需求 大學的時候聽不太懂為什麼要使用那些 design pattern 來設計程式。 作業都小小的,也不需要持續維護,只......

一覽

一覽

想記錄的東西 TOOD Testable SOLID Swift protocol design Design Pattern CardDAV 工作流程 ...

想再留一些東西 身旁的同事、朋友一個一個各奔東西,在自己的領域上嶄露頭角。回過頭來想想自己,究竟在這兩三年裡,累積了什麼呢?陪著小朋友長大,也希望自己能夠長大! 原來我不是 ~程式強者~ 大學的時候,因為很喜歡實作,對於撰寫程式碼很有興趣,努力的幫同學寫不同版本的作業(誤)。出了社會也拼命寫出一個個程式作品,專案有大有小,功能也不是很複雜。看著自己每一階段的作品,以為自己很強… 謎:你的程......