內容簡介
本書從程式的創意發想開始,逐步介紹圖示設計、UI設計以及Android獨特的程式構造,同時也介紹程式設計的流程與如何將程式發佈至Market裡,甚至還包括如何分析來自使用者的迴饋。
.瞭解何謂UI設計以及程式設計的平衡
.公開Android Developer Challenge 決賽作品的開發過程
.對程式設計師、企劃人員、設計師都有所助益的一本書
要開發富有魅力的程式,除瞭必須具備程式設計的功力,還得擁有獨特的創意以及規劃操作介麵的設計力。
本書從創意發想開始,依序講解圖示設計、UI設計、以及活用Android特性的程式構造規劃,並且解說程式設計以及如何將程式發佈至市場的方法,甚至連如何分析使用者迴饋都一併介紹。
作者以Voice Recoder(錄音程式)、MyCloset(服飾管理程式)、Sticky(便條紙程式)為實例,從利用Illustrator繪製畫麵元件開始,到畫麵的編排方式與畫麵的切換方法,全部以圖案與實際的畫麵進行解說。請您務必瞭解該如何在程式設計與版麵設計之間拿捏平衡的方法。
作者簡介
原本是平麵設計工作者,擅長使用Adobe Illustrator做美術設計。後來因為興趣開始嘗試程式設計,從紅外線遙控傢電的操控開發、到用i應用程式及Web應用程式,一路越來越精研。
2008年在Google主辦的Android Developer Challenge比賽中,以「MyCloset」這支APP獲選為前50名最佳軟體。同年10月Android Market開幕時,隨即上傳MyCloset應用程式並大獲好評,並在三個月之內公開瞭9隻應用程式。可說是少數結閤UI設計觀念與程式開發能力於一身的設計師。
內頁插圖
目錄
序言:瞭解程式開發的流程
第1章 創意發想
第2章 確認程式開發的可能性
第3章 圖示設計
第4章 建立資源
第5章 UI設計(使用者介麵設計)
第6章 建立XML版麵
第7章 Architecture設計
第8章 著手撰寫程式
第9章 程式開發的終麯
第10章 在Android Market 發佈程式
第11章 迴饋分析
第12章 結尾:邁嚮下一個程式的開發
精彩書摘
0.2 應用程式的開發流程
應用程式開發的平衡
應用程式的開發主要可分成三個部分,一個是「創意發想」,其次是平麵設計與介麵設計的「設計層麵」,最後則是功能撰寫與程式最佳化的「程式撰寫」。創意發想是程式開發的第一步,而讓創意付諸實現的則是「設計」與「程式撰寫」這兩塊領域,開發程式的過程中,得儘力平衡這兩塊領域的比重。
程式的價值取決於創意,為瞭突顯程式的品味,功能與目的,創意必須既明確且特別。
創意是否能實現,端看設計與程式撰寫之間的平衡度’當我們依照製式的規格開發程式時,設計與程式可分頭進行,如此即可提高程式開發的效率,同時也能提昇程式的品質’但如果是要新創支程式’反而不希望過多的開發人員參與開發,隻要開發人員們都瞭解設計與程式之間的關聯性就夠瞭,如此來就有機會開發齣獨具創意的程式,觀察設計與程式的性質之後,可列舉齣下列這些相對的關係。
設計
.主觀的
.難以理解的
.威性的
.靈鹹型
.直接與使用者接觸
.難以開始、短期的
程式
.客觀的
.某種程度可理解的
.邏輯性的
.長考型
.不與使用者直接接觸
.難以修改、長期的
設計與程式就像是光與影、混沌與秩序一般,不可分割的兩個會麵,過份注重設計,就無法寫齣功能強大的程式,而功能過於豐富,程式的外觀與使用上的方便性就會大大摺損,兩者之間可說是存在著彼此拉扯的關係,惟有保持兩者之間的平衡,纔有機會提昇應用程式的完成度。
如果能同時兼顧介麵設計與程式撰寫,將有機會衍生齣更多不同的創意。當設計的目的夠明確,就能提昇程式設計的功力,當程式的目的與功能都明確.也能創造齣有價值的介麵設計。透過屬於介麵的使用者經驗以及開發程式功能的過程,將讓我們有機會發想齣更棒的創意。
……
深入探索現代軟件開發:從基礎架構到用戶體驗的全麵指南 本書旨在為讀者提供一個全麵、深入的現代軟件開發視角,重點關注構建高性能、可維護且用戶友好的應用程序所必需的核心概念和實踐。我們不會局限於任何特定的移動平颱或技術棧,而是聚焦於軟件工程的普適原則,這些原則無論您選擇何種開發環境,都至關重要。 本書將軟件開發視為一個多層次的係統工程,從最底層的架構設計,到中間層的業務邏輯實現,再到最上層的用戶界麵與交互設計,每個層麵都緊密關聯,共同決定瞭最終産品的質量。 --- 第一部分:堅實的基礎——架構設計與工程實踐 一個健壯的應用程序始於清晰、可擴展的架構。本部分將深入探討構建大型、復雜係統的基礎理論和實用模式,幫助開發者建立起“麵嚮未來”的思維方式。 1.1 軟件架構的核心原則與權衡(Trade-offs) 我們將首先解析模塊化(Modularity)、耦閤(Coupling)與內聚(Cohesion)這三大核心概念。理解如何在不同層次上平衡這些因素,是避免“意大利麵條式代碼”的關鍵。我們將討論分層架構(如三層架構、整潔架構 Clean Architecture)的優缺點,並分析在不同規模項目中選擇閤適架構的決策樹。 關注點: 架構模式對比: MVC、MVP、MVVM、MVI 等模式的演變及其適用場景。重點分析它們如何影響代碼的可測試性和團隊協作效率。 依賴管理: 如何使用依賴注入(DI)框架(不特指任何特定平颱工具)來解耦組件,提升係統的靈活性。 宏觀設計決策: 單體應用(Monolith)到微服務(Microservices)的演進路綫圖,以及何時應考慮服務拆分。 1.2 維護性編程與代碼質量 優秀的代碼不僅僅是能運行的代碼,更是易於理解、修改和擴展的代碼。本部分側重於提升代碼本身的工程質量。 設計原則的實戰應用: 深入剖析 SOLID 原則,通過大量代碼示例展示如何將抽象原則轉化為具體的編碼實踐,例如如何識彆和重構違反“單一職責原則”的代碼塊。 錯誤處理與健壯性: 探討不同層次的錯誤處理策略,從底層I/O異常到上層業務邏輯失敗。強調異常安全(Exception Safety)和冪等性(Idempotency)的重要性。 代碼可讀性與規範化: 討論命名藝術、注釋的有效性,以及如何通過製定和遵循團隊編碼規範來降低維護成本。 1.3 性能優化與資源管理 應用程序的性能是用戶體驗的基石。本章將從係統層麵分析性能瓶頸的常見來源。 內存模型與生命周期: 探討內存分配、垃圾迴收機製(GC)的基本原理,以及如何編寫“零拷貝”或低開銷的代碼片段。 異步編程範式: 深入講解並發與並行編程的基礎,包括綫程安全、鎖機製(Locking)與同步原語。重點分析如何使用更高級的並發結構(如Futures/Promises或Actor模型)來簡化復雜任務的調度。 I/O效率: 磁盤讀寫、網絡通信的效率優化,包括批處理(Batching)和緩存策略的實現。 --- 第二部分:邏輯的實現——數據流與業務建模 現代應用的核心在於如何高效、準確地處理數據和實現業務規則。本部分聚焦於數據持久化、狀態管理和業務邏輯的精確建模。 2.1 數據持久化策略與數據訪問層 數據是應用程序的命脈。本章不探討具體數據庫的SQL語法,而是著重於數據存儲的抽象和模式選擇。 關係型與非關係型數據模型: 分析何時選擇結構化數據(如關係數據庫)和非結構化數據(如文檔、鍵值存儲)。探討數據建模過程中的範式化(Normalization)與反範式化(Denormalization)的權衡。 數據訪問對象(DAO)與Repository模式: 如何構建一個清晰的數據訪問層,將業務邏輯與底層數據源的細節完全隔離。 數據同步與離綫能力: 探討數據衝突解決的基礎方法,以及構建支持離綫操作的應用所需的同步機製設計。 2.2 狀態管理與數據流設計 在復雜的應用中,管理應用狀態(State)的演變是最大的挑戰之一。 單嚮數據流的優勢: 詳細闡述單嚮數據流(如Flux/Redux的思想)如何通過明確的狀態轉換路徑,使調試和理解應用行為變得更容易。 狀態的分解與組閤: 學習如何將全局狀態分解為可管理的小塊,以及如何安全地組閤這些狀態以構建復雜的視圖模型。 副作用(Side Effects)的管理: 如何將數據獲取、定時器等與主狀態更新邏輯分離,確保業務邏輯的純淨性。 2.3 領域驅動設計(DDD)的實踐 對於需要精確反映復雜現實世界業務的應用,DDD提供瞭一套強大的建模工具。 限界上下文(Bounded Contexts): 學習如何定義清晰的業務邊界,避免在不同上下文中混淆術語和邏輯。 實體(Entities)、值對象(Value Objects)和聚閤(Aggregates): 深入理解這些核心構建塊,以及它們如何幫助開發者構建齣忠實於業務需求的模型。 領域事件(Domain Events): 探討如何使用事件來解耦領域內的不同部分,實現響應式和鬆耦閤的係統行為。 --- 第三部分:與用戶交互——構建卓越的體驗 即使擁有完美的代碼架構,如果用戶界麵設計不當,應用程序的價值也會大打摺扣。本部分關注的是如何將技術能力轉化為令人愉悅的用戶體驗。 3.1 用戶界麵設計的心理學基礎 用戶界麵(UI)不僅僅是視覺的堆砌,更是人機交互的科學。 感知與認知負荷: 探討希剋定律(Hick's Law)和菲茨定律(Fitts's Law)等基礎認知心理學原理,指導元素布局和交互反饋的設計。 信息架構(IA): 學習如何組織和分類信息,確保用戶能快速找到他們需要的內容,減少導航焦慮。 一緻性與心智模型: 強調界麵設計中的一緻性原則,以及如何建立符閤用戶既有經驗的心智模型。 3.2 響應式與適應性設計 現代應用需要在各種設備和環境下保持功能和美觀。 響應式布局的抽象: 探討不依賴於特定屏幕尺寸的布局思維,關注內容流、網格係統和比例關係。 可訪問性(Accessibility)的考量: 介紹如何設計考慮視覺、聽覺或運動障礙用戶的界麵,這不僅是社會責任,也是提升基礎可用性的關鍵。 動態反饋與過渡動畫: 討論如何使用微妙的動畫和即時反饋來引導用戶注意力,平滑界麵狀態的改變。 3.3 用戶體驗(UX)的迭代過程 本書強調UX並非一蹴而就,而是持續改進的過程。 定性與定量研究方法: 介紹用戶訪談、可用性測試的基礎流程,以及如何利用分析數據來指導界麵改進方嚮。 原型製作的層次: 從低保真草圖到高保真交互模型的創建流程,以及每種原型在開發周期中的作用。 A/B測試的倫理與設計: 如何科學地設計實驗來驗證UI決策的有效性,並避免引入偏見。 通過對這些跨越架構、邏輯和體驗的全麵覆蓋,本書提供瞭一套獨立於具體開發工具的、關於如何構建高質量、可持續發展的軟件産品的深度方法論。讀者將掌握的,是構建任何復雜數字産品的核心思維框架。