孔子曰:溫故而知新
每次專案完成之後,習慣性的做一些總結,也算是對自己目前技術能力的評估,哪裡掌握了,哪裡沒有掌握好。
廢話不多說,直奔主題
Tips:
-
一步一個腳印,別慌別亂,坑是自己跳的,Bug 是自己寫出來的,要是實在是難受,扇自己兩個耳光
-
之前說程式設計就是演算法和資料結構,不懂甚至反駁說不會演算法和資料結構也能夠寫出來,沒有關係,現在你應該明確知道,演算法和資料結構的重要性,不會就努力去學
-
注意你的程式碼質量,能夠進行封裝的時候進行封裝,程式碼複用大學老師就告訴很重要了
-
如果專案涉及檔案下載功能,請對沙盒內資料夾進行規範化操作,儘量做到見名知意,好處是除錯的時候能夠準確找到檔案所在,同時蘋果也是提倡見名知意
-
如果你的專案涉及檔案下載功能,請一定要記住一點,在一個檔案內,不可能出現相同名字的兩個檔案。這很淺顯,但是越細節的東西,在忙起來的時候可能越容易忘記
-
校驗檔案是否存在本地,儘量使用 iOS SDK 自身提供的 API,善用系統提供的 API ,這無可厚非,不要自作聰明的去寫什麼系統已經能夠支援的演算法。視需求而定,但是要善用系統 API
-
不要過分的相信主流第三方,就算是 SDWebImage、AFNetworking 同樣是有坑存在。第三方的存在是為了解決主流問題,如果業務屬於特殊情況,一定要自行封裝,甚至是修改原始碼,符合業務需求為止
-
如果沒有讀過第三方原始碼,不要懷疑現在讀是不是已經晚了,你能意識到的時候就還不算晚,什麼也別想,讀起來,讀明白,讀不明白就 Google 或者 Bing
以上的所有,說給自己聽,同時希望同道中人能夠共勉。下面說說我的專案,可能一次性不能完成,會分為多個章節完成。
一、 應用場景分析
- 應用主要是服務公司加盟部門人員使用,招商加盟講座,以及銷售人員銷售時,展示給客戶使用,多數情況下,會在沒有網路的會場或者是網路極差的情況下使用,所以要求必須做資料的離線快取。
- 應用面向的群體是公司目標客戶,如果在使用過程中,出現閃退、卡頓情況目標客戶可能會感覺很不好,所以效能優化要良好,儘量保證,在使用時不出現致命性問題
- 銷售人員銷售過程中,更多的專案講解,iPad 應用僅僅是輔助功能,視訊、圖片的展示,是為了提供更好的銷售效果,但是在整個銷售過程中,使用的時間不佔用整個銷售過程的 3%,所以不能有太多的載入時間,要完全的時間,隨用隨走,保證穩定(有點像張小龍的小程式)
- 其他業務場景
二、需求
- iPad 專案,不需要進行 iPhone 適配,僅僅適配 iPad
- 左側側滑選單,CenterController 沒有遮罩
- TabBar 在螢幕左側,類似於大眾點評,與主流iPad 專案一致,我叫做 Dock 欄
- 不卡頓,儘量如絲順滑、斷網時可以使用,有網與否不影響整體使用
- 其他後續新增需求等
三、功能點
經過以上所有的論證以及和加盟部門實際使用人員碰頭會之後,整理出一下所有的功能點,包括但不限於
- 業務功能點:
- 圖片瀏覽器功能:點選圖片能夠進行圖片瀏覽,圖片基本操作,放大縮小、圖片儲存至本地相簿等功能
- 視訊播放器功能:能夠播放視訊,基本視訊播放器功能,手勢操作、視訊播放器內下載視訊功能
- 閱讀 PDF 文件功能:最好能夠直接通過 iPad 連線印表機之後列印
- 載入 HTML 功能:加盟部門人員長於銷售,電腦操作以及富文字編輯能力不強,所以載入 HTML 容錯性要足夠強
- 無限級選單:公司銷售眾多,幼兒園行業,幼兒園課程眾多,變化頻繁,種類繁多。要求可以無限級展示選單、內容,同時動態佈局
- 技術功能點
- 記錄裝置 UUID :由於應用不面向所有使用者使用,同時考慮內容私密性,所以記錄裝置編碼,後臺可以對裝置進行操作,是否允許裝置獲取資料
- 基本登入功能:員工以公司郵箱為賬號,進行登入操作,Token 驗證
- RESTful API:利用高快取機制,不需要另外的資源發現機制、同時相容性好
- 高快取、動態化、元件化:高快取主要體現在快取記憶體高、時間短,動態化主要是根據返回資料進行實時佈局,元件化主要是因為業務變更較多,為了以後能夠更快的進行功能擴充套件、轉移進行元件化設計
- 圖片、視訊、HTML、PDF 檔案離線快取
- 等等其他功能點