我近期剛剛向App Store發(fā)布了我的第一個(gè)iOS應(yīng)用程序【準(zhǔn)確說(shuō)是2019年5月23日】(很開(kāi)心_??),在這個(gè)過(guò)程中,我學(xué)到了一些東西抢腐,哦姑曙,不,是很多東西迈倍,也許有些人可能會(huì)覺(jué)得有用伤靠,所以今天給大家分享一下。
等等,是個(gè)什么應(yīng)用程序宴合?
我就姑且認(rèn)為看到這里大家心里會(huì)有這個(gè)疑問(wèn)吧焕梅?鑒于此,我還是簡(jiǎn)單的向大家介紹一下我的第一個(gè)應(yīng)用程序吧卦洽!
它叫【點(diǎn)點(diǎn)紀(jì)念】贞言,是一個(gè)免費(fèi)的生日、紀(jì)念日阀蒂、倒計(jì)時(shí)等重要日子記錄和提醒的應(yīng)用程序该窗,這也是這篇文章會(huì)詳細(xì)說(shuō)到的,我個(gè)人是怎樣一步一步開(kāi)發(fā)完成這個(gè)產(chǎn)品的蚤霞。
【點(diǎn)點(diǎn)紀(jì)念】目前只用iOS版酗失,它極簡(jiǎn)、易用且安全昧绣,數(shù)據(jù)都在用戶(hù)本地规肴,我不搜集任何用戶(hù)的數(shù)據(jù)信息。
象征性的給個(gè)下載地址吧:
https://itunes.apple.com/cn/app/id1464903574?mt=8
好了夜畴,閑話(huà)不多說(shuō)拖刃,進(jìn)入正題!
開(kāi)發(fā)一款像樣的應(yīng)用程序需要很多時(shí)間
當(dāng)然開(kāi)發(fā)一個(gè)應(yīng)用程序需要很多時(shí)間咯斩启,這好像是眾所周知的道理序调。但是,當(dāng)你是唯一一個(gè)為此而工作的人兔簇,特別是你還是一個(gè)全日制的996上班族发绢,這就需要更長(zhǎng)的時(shí)間。當(dāng)我第一次有制作這個(gè)應(yīng)用程序的想法時(shí)垄琐,我想這應(yīng)該不會(huì)超過(guò)兩個(gè)周末的時(shí)間我就可以搞定边酒,當(dāng)然這件事情確實(shí)很容易在我設(shè)想的那個(gè)時(shí)間段內(nèi)完成的。
然而狸窘,雖然我是做開(kāi)發(fā)的(主攻:后端)墩朦,但是我從來(lái)沒(méi)做過(guò)iOS的開(kāi)發(fā),更何況我是想自己來(lái)編寫(xiě)所有的東西(盡量不使用第三方庫(kù))翻擒。畢竟氓涣,這也是一次學(xué)習(xí)經(jīng)歷,我想盡可能多地了解iOS陋气、Cocoa Touch和Swift劳吠。
所以它花了我四個(gè)周末的時(shí)間,比我原先想象的要長(zhǎng)巩趁,我低估了制作一個(gè)姑且讓我自己覺(jué)得還不錯(cuò)的應(yīng)用程序需要花費(fèi)的時(shí)間痒玩。
我首先明確一個(gè)目標(biāo),一旦我的應(yīng)用程序在App Store發(fā)布了,那么我必須負(fù)責(zé)維護(hù)這個(gè)應(yīng)用程序蠢古,確保該應(yīng)用程序保持維護(hù)和正常運(yùn)行奴曙。因此,當(dāng)你有一個(gè)超級(jí)酷的想法的時(shí)候草讶,確保你愿意在接下來(lái)的一兩年內(nèi)投入其中并保持這個(gè)狀態(tài)洽糟。
The first 90 percent of the code accounts for the first 90 percent of the development time. The remaining 10 percent of the code accounts for the other 90 percent of the development time.
— Tom Cargill, Bell Labs
其中的挑戰(zhàn)就是有一些像我這樣的新人(我說(shuō)的是iOS開(kāi)發(fā),畢竟后端開(kāi)發(fā)是我吃飯的手藝)并不完全掌握的東西(比如:iOS開(kāi)發(fā)流程到涂、Cocoa Touch和Swift)脊框。
建立第一個(gè)自己的應(yīng)用界面很有趣
在我開(kāi)始開(kāi)發(fā)這個(gè)應(yīng)用程序之前,我沒(méi)有任何創(chuàng)建iOS界面(也叫視圖)的經(jīng)驗(yàn)践啄。 所以浇雹,我花了很多時(shí)間去了解和學(xué)習(xí)Apple為我們提供的UIKit內(nèi)置的所有視圖。遇到問(wèn)題時(shí)屿讽,一般情況下昭灵,我會(huì)選擇去官方論壇查看一些關(guān)于視圖的在線(xiàn)帖子和一些StackOverflow上的相關(guān)問(wèn)題。 從那里伐谈,我快速學(xué)會(huì)了如何制作我想要構(gòu)建的頁(yè)面烂完,然后在接下來(lái)的一個(gè)周末左右的時(shí)間里我完成了初始版本全部頁(yè)面的構(gòu)建。
總而言之诵棵,我學(xué)到了大量有趣的東西抠蚣,可以使用自定義UIView來(lái)完成,它幫助我思考如何以不同的方式創(chuàng)建我的應(yīng)用程序履澳。如果您從未構(gòu)建自定義視圖嘶窄,你也可以嘗試一下。
我不擅長(zhǎng)設(shè)計(jì)
是的距贷,我不擅長(zhǎng)柄冲,所以我會(huì)盡可能多的按照自己感覺(jué)不錯(cuò)的風(fēng)格自定義頁(yè)面,以此達(dá)到效果忠蝗,整個(gè)應(yīng)用界面基本都是按照自己感覺(jué)好的狀態(tài)構(gòu)建的【求輕拍】现横,大家有建議或有興趣加入【點(diǎn)點(diǎn)紀(jì)念】把你的設(shè)計(jì)想法付諸實(shí)踐的,可以聯(lián)系我阁最;不過(guò)請(qǐng)相信戒祠,我的設(shè)計(jì)水平也會(huì)越來(lái)越好的,畢竟速种,我也是很上進(jìn)的姜盈!
Hey Siri, 提醒我有時(shí)間多看看設(shè)計(jì)相關(guān)的課程。
計(jì)劃哟旗,計(jì)劃,計(jì)劃
這可能是我在這個(gè)項(xiàng)目上學(xué)到的很重要的事。我是iOS開(kāi)發(fā)的新手并且是邊學(xué)邊做闸餐,所以我沒(méi)有完全計(jì)劃好一切饱亮,我的意思是,我知道我想要建造什么但不是很清楚要建造成什么樣舍沙。也沒(méi)有一個(gè)產(chǎn)品經(jīng)理和我商量近上。所以我在開(kāi)發(fā)這個(gè)應(yīng)用程序時(shí)犯了一個(gè)很大的錯(cuò)誤,就是在我想做卻又還沒(méi)有任何計(jì)劃的時(shí)候就開(kāi)始了開(kāi)發(fā)拂铡,以至于手忙腳亂壹无,有點(diǎn)太趕了。
計(jì)劃至關(guān)重要感帅,因?yàn)樗梢詭椭3謱?zhuān)注斗锭,同時(shí)也可以阻止你的激情減退。顯然失球,萬(wàn)事萬(wàn)物會(huì)發(fā)生變化岖是,計(jì)劃也一樣(畢竟古人云:計(jì)劃趕不上變化),但也要盡量嘗試在開(kāi)始之前做一份計(jì)劃实苞,哪怕只是自己的一個(gè)Side Project〔虺牛現(xiàn)在有很多在線(xiàn)工具可以幫助我們很輕松的就實(shí)現(xiàn)前期的一個(gè)簡(jiǎn)單計(jì)劃了,比如我很喜歡使用的一個(gè)工具叫:Trello黔牵。
逼著自己完成計(jì)劃
這是我在開(kāi)發(fā)這個(gè)應(yīng)用時(shí)經(jīng)常遇到的問(wèn)題聪轿。我很容易想要放棄我已經(jīng)開(kāi)發(fā)了一段時(shí)間的東西,然后轉(zhuǎn)向更有趣的東西猾浦。有一個(gè)周末陆错,我沒(méi)有完成任何開(kāi)發(fā)工作,并決定做其他事情跃巡。當(dāng)然危号,保持勞逸結(jié)合是很重要的,但是要選擇放棄就不應(yīng)該了素邪。
所以外莲,逼著自己完成計(jì)劃也是很有意義的,但這并不意味著你需要花一天時(shí)間重構(gòu)你的整個(gè)代碼庫(kù)如果僅僅只是因?yàn)槟銓?duì)你的代碼內(nèi)部某些命名的方式感到不滿(mǎn)意(我就這樣做了??)兔朦;而有意義是你應(yīng)該將你在Trello板上計(jì)劃的新功能加上偷线、或修復(fù)你之前發(fā)現(xiàn)的BUG。
作為開(kāi)發(fā)人員沽甥,很容易看到自己的代碼不滿(mǎn)意而想要讓它變得更好声邦,但實(shí)際上我并不認(rèn)為你會(huì)對(duì)你編寫(xiě)的代碼100%的滿(mǎn)意,總會(huì)有一種更好方式讓它更好 摆舟。而最終用戶(hù)不會(huì)知道這其中的差異亥曹,所以起初來(lái)說(shuō)它是次要的邓了,這個(gè)優(yōu)化過(guò)程應(yīng)該放在應(yīng)用發(fā)布后的更新和重構(gòu)中去進(jìn)行。
你不會(huì)比用戶(hù)更清楚你應(yīng)用的不足
說(shuō)真的媳瞪,如果你有機(jī)會(huì)在你決定將應(yīng)用上線(xiàn)之前交到用戶(hù)手中去做一次小范圍的使用體驗(yàn)骗炉,那是最好不過(guò)的了!作為開(kāi)發(fā)人員蛇受,我們有時(shí)會(huì)關(guān)注開(kāi)發(fā)和設(shè)計(jì)的較小方面句葵。你開(kāi)發(fā)的應(yīng)用可能在你自己看來(lái)都沒(méi)問(wèn)題,但是當(dāng)拿到用戶(hù)的手上時(shí)兢仰,就暴露出了很多問(wèn)題乍丈;某些功能體驗(yàn)不佳,某些系統(tǒng)版本下崩潰等等各種問(wèn)題把将;這時(shí)轻专,你不可能寫(xiě)一大堆測(cè)試去將所有細(xì)節(jié)都測(cè)試到位,畢竟你是一個(gè)人在戰(zhàn)斗秸弛!
如果你身邊沒(méi)有很多可以幫你測(cè)試應(yīng)用程序的親朋好友铭若,你就可以嘗試將你的應(yīng)用發(fā)布到Xcode Flight Test并在某些社交媒體平臺(tái)上發(fā)布測(cè)試邀請(qǐng)鏈接,請(qǐng)大家?guī)椭氵M(jìn)行應(yīng)用測(cè)試递览。對(duì)于【點(diǎn)點(diǎn)紀(jì)念】叼屠,我邀請(qǐng)了超過(guò)20個(gè)人做了體驗(yàn)測(cè)試,雖然不是每個(gè)人都給了我反饋绞铃,但是镜雨,我也收到了很多很有價(jià)值的反饋意見(jiàn),這幫助了我將【點(diǎn)點(diǎn)紀(jì)念】做的更好儿捧。
記准晕搿:千萬(wàn)不要害怕批評(píng)。
最后的想法
在【點(diǎn)點(diǎn)紀(jì)念】上的投入很有趣菲盾,盡管有時(shí)也非常困難和令人沮喪颓影、盡管現(xiàn)在的應(yīng)用還不完善,但總體來(lái)說(shuō)這是一次很好的體驗(yàn)懒鉴。 我學(xué)到了很多東西诡挂,希望其他人現(xiàn)在可以享受我創(chuàng)作的東西。如果你是軟件開(kāi)發(fā)的新手临谱,那么靜下來(lái)花幾天時(shí)間嘗試學(xué)習(xí)開(kāi)發(fā)一些東西璃俗。
多實(shí)踐,不斷提高自己的技能悉默。它不一定是驚人的或偉大的城豁,但學(xué)習(xí)從來(lái)都不是壞事。如果你需要更多建議或希望參與到【點(diǎn)點(diǎn)紀(jì)念】的開(kāi)發(fā)抄课、設(shè)計(jì)唱星、翻譯中來(lái)雳旅,請(qǐng)隨時(shí)與我聯(lián)系!
最后謝謝大家间聊,【點(diǎn)點(diǎn)紀(jì)念】我會(huì)盡力一直維護(hù)下去岭辣,希望大家多多支持!