React Native 從頭學筆記11 — 從測試行為到設計思維

大家怎麼籌辦一次聚會?
1. 定一個時間
2. 挑幾個地方
3. 散佈訊息給朋友
4. 確定會到的人
5. 做一點調整:時間、地點…都有可能
6. 訂位
7. 成行

以上幾個動作,完成一個任務。

在測試領域中,各自對應的是:
.動作 => Test Case
.任務 => Test Suite

不過由於物件導向/面向對象/OO 的世界裡,基礎的單位是「Class」,而 Class 的自然對應,大多是「名詞」;而動作和任務指的是行為,大多是「動詞」,所以 "以測試檔案為單位的實體結構" 是將 Test Case 放在針對同一個 Class 的測試檔中,再用 Test Suite 這個邏輯單位(另一個實體檔案)把多個測試檔中的部分(或全部) Test Case 連接起來。

那的大家怎麼「定一個地方」?我列幾個設想:
.天氣好熱,當然要有冷氣啦!
.這次約的人都很會玩,太安靜的文青咖啡廳不合適,海產店還差不多。
.距離自己公司或自己家不想太遠。
.那個誰是不是吃素的?還是不吃牛?

……然後,才去找哪些地方/餐廳是我想像要約定的那天可能是有空位的。這個叫「設想」。

等到約定成行、大家吃吃喝喝完成後,才知道:當天有人不吃猪肉;大家下班累了,其實想喝杯咖啡小聊一下,所以早知道去咖啡聽了。這叫「回想」。

事情沒發生之前,沒辦法「回想」。對吧?但是可以「設想」。

「設想」指的是在已知的限制下,想像任務/活動想達成的目的,去做的一切安排。設想的好處是:我們控制住了一些可能的不愉快 (地方太吵、太熱…),盡可能依我們的朋友屬性制定出這次的聚會。

有時候我們會以為「回想」也是一種「設想」:用經驗來規劃,而不是依現下的狀況。所謂現下的狀況有時會包括一點實驗性質,而經驗相對性的武斷和侷限。不論如何,經驗有時非常保貴,但是在變動很頻繁的年代會顯得褪色。(例如:一年前有的店,現在不一定還存在)

回到我們「編寫軟體」的主題。

憑藉「回想/經驗」寫出來的程式碼,我認為那是一種「堆砌」行為;要說是「組裝、整合」都行;憑藉「設想」去寫出來的設式碼,我認為那是一種「設計」行為。

蓋一棟房子,是老人住的?還是年輕人住的?設計是不同的;寫一個 App,TA 是 B2B 的、B2C?還是 B2B2C 的?設計上的思維都不相同。

為了讓我們做的事、寫出來的軟體,能符合現下所需所限,這個事先設想的模式,是重要的、是需要經驗以及更難一點的:想像力!而想像力是讓生活變得美好的一項重要元素!

所以在撰寫程式之前,我們應該先進入「設計思維」、開啟我們的想像力。如何想像?嗑藥嗎?不不,那個手段不好;聽音樂?還行!對於軟體設計/工程師來說,我們的手段是「利用測試工具」。

OK?

Show your support

Clapping shows how much you appreciated WuFeng Chiang’s story.