想起程式

人是一根會思考的蘆葦

1. 什麼是設計與結構

想要走得快,唯一的方式就是要走的好

第一章:什麼是設計與結構 「架構」常被使用在高層次的事物中,與較低層次的細節脫節,而「設計」往往似乎隱含了較低層次的結構與決策。但作者舉了設計新家的建築師為例子,什麼是架構?外觀、挑高和空間及房間佈局。而每個插座、燈的開關和燈座在哪,是低層次的設計。 我看到了支持所有高層決策的全部細節 也看到了這些低層次的細節和高層次的決策都是房子整體設計的一部分 這兩者之間是沒有明確的界限的 目標 ......

筆記心得 Clean Architecture 無瑕的程式碼 0

!!!

上週老爸老媽來幫忙小朋友開學,無暇記錄一些東西。 Clean Architecture 這本七月初買到現在,才看了一半。不過時間有限,若能持之以恆地看完,就很開心了! 老實說我沒有看過 Bob 大叔前幾個作品,之所以會看這本,是因為我對程式開發的架構設計充滿了想像。 如何保有變動的彈性? 過去 app 的開發,還只是維持 [開案] > [討論/設計] > [實作] > [......

Restructure 思考脈絡 (2)

Restructure 思考脈絡 (2)

上一篇: Restructure 思考脈絡 1 延續上一篇的題目,在漸進式地增加功能: 將多個來源的資料,合併成一份資料後匯入系統 資料內有多筆細目,細目數量可能很大,且 process 的 memory 大小有限制 資料使用其中一欄做排序,由小到大,且唯一, 如果遇到值一樣的欄位,則取用在 array 中比較前面的 source 資料來源支援另一種輸入形式,輸入資料為與上次最後輸入......

變數資料與檔案儲存

變數資料與檔案儲存

思考一個常常遇到的問題: 物件中有一個變數資料,當下次再開啟 app 時,需要是上次的數值 先用很直覺的方式處理它 12345678910111213141516171819202122struct Student: Codable { var id: String var name: String var age: Int}class Foo &#......

Restructure 思考脈絡 (1)

Restructure 思考脈絡 (1)

重新思考程式架構 要想很多?還是足夠就好? 最近看了 clean architecture 還蠻多省思,有空再分享一下,先來做一下我一直想要來處理的事情。 過去我常常會為了專案,「未來」「可能」會發生的功能,對元件保留功能,或設計擴充的可能性。但往往時間過去了,當時的設想,往往不會如願,這些保留的擴充性,反而成為了阻礙。 要如何保有彈性,但又不會設計的太遠離現實? 重新一步一步把目標貼......

NSHash​Table & NSMap​Table

NSHash​Table & NSMap​Table

http://nshipster.com/nshashtable-and-nsmaptable/ http://www.cocoachina.com/ios/20150519/11809.html weakObjects() 看了一下別人的 code 看到了這個關鍵至 NSHash​Table 123456NSSet(NSMutableSet)持有其元素的強引用,同時這些元素是使用hash值......

回應 [Xamarin 取代 Kotlin 及 Swift 的可能性,高嗎?]

回應 [Xamarin 取代 Kotlin 及 Swift 的可能性,高嗎?]

我覺得目前機會不大… 換個層面看, 已經存在的 app,有機會換成跨平台語言嗎? 如果要換,不太可能一次把所有功能替換掉,所以模組間的相依性就很重要,如果 app 本身的程式碼並非可測性,那首先就要先改變軟體架構,才有機會,有好的相依性,才有可能慢慢抽換模組。 但,通常如果有好的軟體架構,維護或 debug 也相對容易,成本也低,那是不是要改用跨平台語言降低開發維護成本?這可能就要在評估......

2017-08-05-wwdc17_702

Privacy and Your Apps

使用 identifierForVendor 來觀察 app 內,對於一個功能行為 / 需要程度 而不會是用來觀察一個 user 的特定行為模式 需要權限時,要添加的 description 要加到 Info.plist 中 ex: location: Info.plist: NSLocationUsageDescription iOS 11 又增加/修改了三項 Locati......

Check out Engineering for Testability

Check out Engineering for Testability

每隔幾天在客運車上就隨便看一個… Tesable code 用 protocol and paramerterization 方法和概念,讓你的 code 變成可以測試的,也就是把邏輯和資料的部分拆開,讓 algorithms 能被拆出來,並且被測試 UI Testing 摘要化(abstacting) UI element queries (其實應該就是如同 unit test 時......

What's New in Swift

What's New in Swift

Class and subtype existentials main target 與 framework 不用相同的 swift 版本 bridge header 的 complier 速度有改良 有改善 xcode 的 indexing… @objc 改變它的特性 原本是無限制的 Overriding an Object C method Conforming to an Obj......