Android開發中的函數式編程應用:什麼是函數式編程
我們進行了多年的Android開發,但是面對越來越複雜的業務邏輯和越來越龐大的代碼,傳統命令式的編程方式已經漸漸無法解決我們的問題了。今天開始我們將探索一種非常強大的編程範式:函數式編程。 1. 傳統編程範式的挑戰 1.1 過程式編程的難題 大家日常開發中一定遇到過這些問題: 1.1.1 返回值不確定 // 全局計數器變量 var counter = 0 // 返回值依賴於外部狀態,每次調用結果
我們進行了多年的Android開發,但是面對越來越複雜的業務邏輯和越來越龐大的代碼,傳統命令式的編程方式已經漸漸無法解決我們的問題了。今天開始我們將探索一種非常強大的編程範式:函數式編程。 1. 傳統編程範式的挑戰 1.1 過程式編程的難題 大家日常開發中一定遇到過這些問題: 1.1.1 返回值不確定 // 全局計數器變量 var counter = 0 // 返回值依賴於外部狀態,每次調用結果
1. 聲明式編程 聲明式範式和命令式範式是不同的。命令式編程專注於“如何一步步完成任務”,開發者需要詳細地指示如何執行每一個步驟,比如Android的xml layout開發,開發者必須指定所有View的層次結構,自己調整View的屬性以獲得更好的性能。 而聲明式編程則關注於“期望的結果是什麼”,而具體這個結果如何達到、如何實現則不會明確編寫,而是交給框架來處理。比如數據庫的SQL,我們對於
語法分析器 語法分析通常是作為編譯器或者解釋器的一個組件出現的,它是一種特別的程序,接收非結構化的數據(比如文本、任何種類的符號、數字或者字符流),輸出結構化的數據為結果。比如將csv(逗號分隔值)文本文件解析為二維數組;將Json或者xml解析為樹形數據結構。 目前實際上已經有比較成熟的工具(比如Yacc、ANTLR等)可以根據語法規則自動生成語法分析器的實現代碼,而且執行效率很高。 面向組合子