想起程式

人是一根會思考的蘆葦

漫畫:超智遊戲 (雷)

比賽的勝負都只是場賭博

超智遊戲 (One Outs) 我妹介紹我看這套漫畫,之前就有聽同事說,而最近偷點時間看完他。故事的緊張刺激,抓握得不錯。 這是個邪道漫畫,所以你已經可以預測他會成功的完成謀略,不過還是會想要看他完成的過程。 尤其對他對於普世價值的詮釋,像是「真正的團隊精神」,不禁讓我想一想,如果真的在這樣的團隊,是令人期待的呀! 內容 這套漫畫被戲稱「西索打棒球」 主角渡久地東亞,是一個棒球賭徒,他不只賭......

流程上,面對開發環境的需求

其實有更深層的問題

當需求被提出來的時候 前幾天開會,有位同事提出了一個需求: Android 平台上,除了 staging server, production server 環境之外,還有 side server 環境,但是 iOS 卻沒有的 side server 的環境,希望 client 端和後台都能幫忙建立一下。 而我在一開始覺得這個功能在 client 上不會太難,而且既然 android 開......

7. SRP 單一職責原則

不是一個模組只該負責一件事情,而是...

SRP: 單一職責原則 是個容易讓人誤會的名稱,程式設計師很容易因為這個名字,就假設它意味著每個模組都應該只做一件事情。底層對於函式是這樣沒有錯,但對 SOLID 來說,這不是 SRP。 傳統描述: 一個模組應該有一個,且只有一個理由會使其改變 而軟體系統被改變以滿足使用者和利益相關者,這兩者也就會是改變的理由。因此可以改寫成: 一個模組應該只對唯一的一個使用者或利益相關者負責 但實......

Part III. 設計原則

整潔的程式碼 (clean code) 之下,也有可能會製造大量的垃圾!?

設計原則 整潔的程式碼 (clean code) 是軟體的基礎。如果這個磚塊做得不好,那麼建築物的架構就不是那麼重要了。但是即時有好的磚塊,也是可能會製造大量的垃圾,這時就是 SOLID 的原則發揮的場所了 不過我自己是覺得「形」比較重要。如果考量的是能夠容忍變化的條件,而且還有時程上的壓力時,那麼保有好的「形」,才有機會在未來替換掉不好的部分。但兩者能兼顧是最好拉! SOLID 的原則告訴......

6. 函數式程式設計

變數賦值上加上規範

函數式程式設計 一句令人驚訝的話: 函數式語言中的變數不會改變 (do not vary) 列印前 25 個整數的平方 比較一下 Clojure 程式和 Java 程式之間的差異 Java 123456public class Squint { public static void main(String args[]) { for (int i=0; i<......

程式碼的維護

重新學習

為什麼要這樣寫? 某日下午,和同事討論了一下我發的 PR 內容。 「看程式碼,我是能理解你想要幹嘛,不過『未來維護的人』看得懂嗎?」這樣說道… 「你這樣設計未來可能會發生…的問題」 每種設計方式都有他的問題,還有可能是相同的問題 我的程式理念,慢慢的往依賴能切分乾淨靠近,但是相對於 structured programming 的直覺使用,依賴反轉過後,尋找實際實作者時,往往會出現難以接受的......

5. 物件導向程式設計

間接控制移轉上加上規範

物件導向程式設計 物件導向(OO)什麼? 封裝 (encapsulation)、繼承 (inheritance) 和多型 (polymorphism) 這三件事情以適當的方式合成的產物,或者至少 OO 語言必須支援這三件事 封裝 C 語言中也有完美的封裝。 point.h 123struct Point;struct Point* makePoint(double x, double y......

4. 結構化程式設計

直接控制移轉上加上規範

結構化程式設計 Dijlstra 很早就認識到程式設計是困難的,任何複雜的城市都包含太多細節,人腦無法幫忙管理。Dijlstra 的解決方案是運用數學原理的證明 (proof)。認為可以像數學家那樣使用層次結構來證明程式是對的。他發現 goto 語句的某些使用方式會阻止模組遞迴地被分解成越來越小的單元,會導致無法使用分而治之 (divide-and-conquer) 的方法來進行合理的證明。......

3. 範式概述

範式的歷史與架構是所有的一切

範式概述 三種範式 可以特別注意到等下描述的範式: 從程式設計師那邊移除了一些功能,並沒有增加什麼新的功能,是消極性的增加規範,告訴我們「不該」做什麼,而不是告訴我們「該」做什麼。 結構化程式設計 (structured programming) 使用為人所知的 if/then/else 和 go/while/until 來建構程式,取代 goto 結構化程式設計在直接的控制轉移上加上......

2. 兩種價值觀的故事

履行參與戰鬥的責任

兩種價值觀的故事 行為 / 架構 每個軟體系統都會為利益相關者提供兩種不同價值 行為 (behavior) 利用 功能規格 (functional specification) 或 需求文件 (requirements document) 來達到這一點,然後實作程式碼,並且除錯。 可悲的是:許多程式設計師認為這是們的全部工作。 結構 (structure) 軟體 (software ......