孔子曰:溫故而知新
每次項(xiàng)目完成之后,習(xí)慣性的做一些總結(jié),也算是對(duì)自己目前技術(shù)能力的評(píng)估,哪里掌握了,哪里沒(méi)有掌握好。
廢話不多說(shuō),直奔主題
Tips:
一步一個(gè)腳印,別慌別亂,坑是自己跳的,Bug 是自己寫(xiě)出來(lái)的,要是實(shí)在是難受,扇自己兩個(gè)耳光
之前說(shuō)編程就是算法和數(shù)據(jù)結(jié)構(gòu),不懂甚至反駁說(shuō)不會(huì)算法和數(shù)據(jù)結(jié)構(gòu)也能夠?qū)懗鰜?lái),沒(méi)有關(guān)系,現(xiàn)在你應(yīng)該明確知道,算法和數(shù)據(jù)結(jié)構(gòu)的重要性,不會(huì)就努力去學(xué)
注意你的代碼質(zhì)量,能夠進(jìn)行封裝的時(shí)候進(jìn)行封裝,代碼復(fù)用大學(xué)老師就告訴很重要了
如果項(xiàng)目涉及文件下載功能,請(qǐng)對(duì)沙盒內(nèi)文件夾進(jìn)行規(guī)范化操作,盡量做到見(jiàn)名知意,好處是調(diào)試的時(shí)候能夠準(zhǔn)確找到文件所在,同時(shí)蘋(píng)果也是提倡見(jiàn)名知意
如果你的項(xiàng)目涉及文件下載功能,請(qǐng)一定要記住一點(diǎn),在一個(gè)文件內(nèi),不可能出現(xiàn)相同名字的兩個(gè)文件。這很淺顯,但是越細(xì)節(jié)的東西,在忙起來(lái)的時(shí)候可能越容易忘記
校驗(yàn)文件是否存在本地,盡量使用 iOS SDK 自身提供的 API,善用系統(tǒng)提供的 API ,這無(wú)可厚非,不要自作聰明的去寫(xiě)什么系統(tǒng)已經(jīng)能夠支持的算法。視需求而定,但是要善用系統(tǒng) API
不要過(guò)分的相信主流第三方,就算是 SDWebImage、AFNetworking 同樣是有坑存在。第三方的存在是為了解決主流問(wèn)題,如果業(yè)務(wù)屬于特殊情況,一定要自行封裝,甚至是修改源碼,符合業(yè)務(wù)需求為止
如果沒(méi)有讀過(guò)第三方源碼,不要懷疑現(xiàn)在讀是不是已經(jīng)晚了,你能意識(shí)到的時(shí)候就還不算晚,什么也別想,讀起來(lái),讀明白,讀不明白就 Google 或者 Bing
以上的所有,說(shuō)給自己聽(tīng),同時(shí)希望同道中人能夠共勉。下面說(shuō)說(shuō)我的項(xiàng)目,可能一次性不能完成,會(huì)分為多個(gè)章節(jié)完成。
一、 應(yīng)用場(chǎng)景分析
- 應(yīng)用主要是服務(wù)公司加盟部門(mén)人員使用,招商加盟講座,以及銷(xiāo)售人員銷(xiāo)售時(shí),展示給客戶使用,多數(shù)情況下,會(huì)在沒(méi)有網(wǎng)絡(luò)的會(huì)場(chǎng)或者是網(wǎng)絡(luò)極差的情況下使用,所以要求必須做數(shù)據(jù)的離線緩存。
- 應(yīng)用面向的群體是公司目標(biāo)客戶,如果在使用過(guò)程中,出現(xiàn)閃退、卡頓情況目標(biāo)客戶可能會(huì)感覺(jué)很不好,所以性能優(yōu)化要良好,盡量保證,在使用時(shí)不出現(xiàn)致命性問(wèn)題
- 銷(xiāo)售人員銷(xiāo)售過(guò)程中,更多的項(xiàng)目講解,iPad 應(yīng)用僅僅是輔助功能,視頻、圖片的展示,是為了提供更好的銷(xiāo)售效果,但是在整個(gè)銷(xiāo)售過(guò)程中,使用的時(shí)間不占用整個(gè)銷(xiāo)售過(guò)程的 3%,所以不能有太多的加載時(shí)間,要完全的時(shí)間,隨用隨走,保證穩(wěn)定(有點(diǎn)像張小龍的小程序)
- 其他業(yè)務(wù)場(chǎng)景
二、需求
- iPad 項(xiàng)目,不需要進(jìn)行 iPhone 適配,僅僅適配 iPad
- 左側(cè)側(cè)滑菜單,CenterController 沒(méi)有遮罩
- TabBar 在屏幕左側(cè),類(lèi)似于大眾點(diǎn)評(píng),與主流iPad 項(xiàng)目一致,我叫做 Dock 欄
- 不卡頓,盡量如絲順滑、斷網(wǎng)時(shí)可以使用,有網(wǎng)與否不影響整體使用
- 其他后續(xù)新增需求等
三、功能點(diǎn)
經(jīng)過(guò)以上所有的論證以及和加盟部門(mén)實(shí)際使用人員碰頭會(huì)之后,整理出一下所有的功能點(diǎn),包括但不限于
- 業(yè)務(wù)功能點(diǎn):
- 圖片瀏覽器功能:點(diǎn)擊圖片能夠進(jìn)行圖片瀏覽,圖片基本操作,放大縮小、圖片保存至本地相冊(cè)等功能
- 視頻播放器功能:能夠播放視頻,基本視頻播放器功能,手勢(shì)操作、視頻播放器內(nèi)下載視頻功能
- 閱讀 PDF 文檔功能:最好能夠直接通過(guò) iPad 連接打印機(jī)之后打印
- 加載 HTML 功能:加盟部門(mén)人員長(zhǎng)于銷(xiāo)售,電腦操作以及富文本編輯能力不強(qiáng),所以加載 HTML 容錯(cuò)性要足夠強(qiáng)
- 無(wú)限級(jí)菜單:公司銷(xiāo)售眾多,幼兒園行業(yè),幼兒園課程眾多,變化頻繁,種類(lèi)繁多。要求可以無(wú)限級(jí)展示菜單、內(nèi)容,同時(shí)動(dòng)態(tài)布局
- 技術(shù)功能點(diǎn)
- 記錄設(shè)備 UUID :由于應(yīng)用不面向所有用戶使用,同時(shí)考慮內(nèi)容私密性,所以記錄設(shè)備編碼,后臺(tái)可以對(duì)設(shè)備進(jìn)行操作,是否允許設(shè)備獲取數(shù)據(jù)
- 基本登錄功能:?jiǎn)T工以公司郵箱為賬號(hào),進(jìn)行登錄操作,Token 驗(yàn)證
- RESTful API:利用高緩存機(jī)制,不需要另外的資源發(fā)現(xiàn)機(jī)制、同時(shí)兼容性好
- 高緩存、動(dòng)態(tài)化、組件化:高緩存主要體現(xiàn)在緩存內(nèi)存高、時(shí)間短,動(dòng)態(tài)化主要是根據(jù)返回?cái)?shù)據(jù)進(jìn)行實(shí)時(shí)布局,組件化主要是因?yàn)闃I(yè)務(wù)變更較多,為了以后能夠更快的進(jìn)行功能擴(kuò)展、轉(zhuǎn)移進(jìn)行組件化設(shè)計(jì)
- 圖片、視頻、HTML、PDF 文件離線緩存
- 等等其他功能點(diǎn)