日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

為什么你的android代碼寫得這么亂

瀏覽:113日期:2022-09-27 14:13:57

Android上絕大多數的代碼,都是由事件觸發的,或者說,幾乎所有代碼都是寫在某個回調上的,比如onCreate, onPause, onClick,onBind等等,而這些回調函數,全都是一個個的函數,也就是說,是一個一個小的過程。

單個事件內完成的功能

對于一些簡單的情況,在某一個回調內部就能完成的事件,大致上都是在回調中創建一個A類的對象,然后調用A類的某個方法,這個方法里面又用到了B類和C類的對象,經過了一系列翻云覆雨的計算,我們最終得到了一些數據,用TextView顯示了出來,比如點擊一個按鈕彈出一個Toast顯示當前軟件的版本號這樣的功能,只需要一個onClick就可以完成。所以我們可以粗暴的理解為,所有面向對象,都是基于過程的。因為只有一系列對象,按照某種特定的順序組織起來,調用里面特定的方法,才能得出一個有意義的功能。這也解釋了為什么很多SDK,就給你個方法,告訴你,你什么都不用管,在Application的onCreate里面調一下這個方法就好了。

為什么你的android代碼寫得這么亂理論上任何一個功能都可以用一個方法來完成多個事件配合完成的功能

再比如一些稍微復雜一點的功能,需要多個事件配合,比如計算器,當用戶按下第一個數字的時候,觸發了onClick事件,你要把這個數字保存為activity的某個字段,接著,用戶按下了加號和第二個數字,你都要這樣保存起來,以便于在最終用戶按下等號的時候,你能把以前的一系列輸入獲取到,以計算出一個結果。也就是說,當一個功能需要多個事件配合完成的時候,我們做的事情就是把各個事件的最終結果從局部作用域提升為類的字段,即提升可見性。當可見性不那么好提升的時候,垃圾代碼就出現了。比如這樣的代碼:

為什么你的android代碼寫得這么亂五行缺Context

Context是非常常用的一個對象,無論是發廣播,還是啟動activity,啟動Service,獲取SharedPreferences,獲取資源等等,許多地方都需要用到context,加上Application對象一直存在,于是就想出了這么個辦法。

我并不反對通過提升可見性來實現多個事件之間的配合,比如計算器的例子,提升可見性就是一個簡潔優雅的解決方案。但是很多時候為了提升某些字段的可見性,將字段設置為靜態字段是沒有必要的,而且有可能造成內存泄漏。

什么樣的代碼簡潔清晰

我們之所以代碼寫得那么難受,很多時候是因為給的接口不夠“多”,試想一下,如果SD卡的文件被改動有回調,手機位置發生變化有回調,網絡狀態一變化就有回調,這會讓很多功能實現起來變得非常簡單。

為什么你的android代碼寫得這么亂封裝必要的回調函數

什么事件需要寫回調?通常是那些破壞代碼簡潔的邏輯,比如耗時的操作,像網絡請求,大量計算,獲取地理位置等,或者一直在被監聽的事件,比如推送到本地的消息,文件被篡改、網絡狀態等。讓那些簡單不耗時的操作,比如讀取文件,彈出Toast或者設置TextView分門別類的放在這些回調里面,讓人一目了然。

這些是無法用MVP,MVVM等架構解決的,原因很簡單,因為無論怎么分層,這些回調都是需要的,分層只是把這些回調放在不同的文件里面而已。軟件分層一方面是為了容易移植,另一方面是為了分離純Java的代碼,方便做單元測試。

回調是讓代碼簡潔的方式之一,在我們實際編碼的過程當中,在此前的基礎上,還可能會遇到下面這個非常常見的問題。

臃腫的回調

無論我們愿不愿意,我們都是在以填充各種事件的回調來編寫android代碼的,這就導致一個問題,當業務邏輯越來越復雜的時候,我們就很有可能會在同一個回調中,編寫多個毫不相關的任務的業務邏輯。

當一個事件的回調中承載的事情越來越多,面向過程的思想就體現的越來越明顯。在實際編程的過程當中,我偏向于同時具備面向對象和面向過程兩種思維方式,而不是簡單粗暴的認為:面向對象高雅,面向過程低俗。它們的本質是相同的,褪去多態的光環,面向對象只是一種將函數分門別類存放的一種建議。

如何解決回調過于臃腫的問題?

優先考慮將這個回調的事件細分。典型的就是AbsListView類的onTouchEvent,onTouchEvent里面的邏輯非常復雜,為了避免堆積在一起過于凌亂,onTouchEvent被分解成了onTouchDown,onTouchMove,onTouchUp以及onTouchCancel。這樣一大塊代碼就會被打散,交給更細致的回調來分擔。

為什么你的android代碼寫得這么亂將onTouchEvent細分

如果某個事件的回調中執行的業務邏輯,并不是一類(比如發送網絡請求刷新了一下ListView和讀取了一下配置文件),不像onTouchEvent這樣可以細分,那么問題就會變得比較麻煩,因為我們用事件的回調來解決問題的時候,我們真正想要的是回調函數執行的時機,比如onResume就在那個特定的時機會被調用,如果你需要的就是這個時機,你就只能老老實實的在這里寫代碼,別無他法。為了代碼簡潔,我們能做的就是盡可能的將這個承擔了多個職責的回調寫的足夠簡單,最好是沒有循環,沒有分支,就是幾個赤裸裸的函數放在哪里,讓人一目了然。

為什么你的android代碼寫得這么亂回調只提供了一個處理問題的時機,很難保證單一職責

認識到android軟件開發是在各種各樣的回調上搭建一切功能,是編寫代碼的第一步,是未來學習設計模式的基礎。

文/吳晨(簡書作者)原文鏈接:http://www.jianshu.com/p/8182921fea87
標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲aⅴ网站| 日本不卡一区二区| 欧美日韩亚洲三区| 日韩精品欧美大片| 18国产精品| 国产视频网站一区二区三区| 日本欧美在线| 国产精品久久久久久久久久白浆| 日韩福利在线观看| 日韩精品成人在线观看| 日韩精品亚洲专区| 日韩成人av影视| 国产麻豆精品| 老色鬼精品视频在线观看播放| 久久精品免费看| 毛片在线网站| 婷婷激情一区| 亚洲作爱视频| 天堂久久一区| 国产精品15p| 成人在线免费观看91| 欧美成人精品三级网站| 欧美日韩国产免费观看视频| 久久亚洲图片| 日韩av不卡在线观看| 麻豆精品一区二区综合av| 中文在线免费视频| 亚洲一区二区动漫| 青青草91视频| 欧美在线亚洲综合一区| 三上悠亚国产精品一区二区三区| 另类中文字幕国产精品| 亚洲女同中文字幕| 亚洲三级网址| 久久精品国产99| 欧美中文字幕一区二区| 日韩精品一卡二卡三卡四卡无卡| 国产亚洲久久| 国产精品成人一区二区不卡| 亚洲成人三区| 7777精品| 日本精品在线中文字幕| 亚洲精品护士| 激情综合五月| 夜夜嗨网站十八久久| 欧美一区成人| 中文字幕在线高清| 亚洲精品网址| 久久精品超碰| 蜜桃av在线播放| 亚洲色图国产| 国产自产自拍视频在线观看| 天堂成人国产精品一区| 精品日韩一区| 三级亚洲高清视频| 精品精品99| 一区二区电影| 欧美不卡高清一区二区三区| 亚洲精品麻豆| 国产成人久久精品一区二区三区| 亚洲少妇诱惑| 麻豆国产欧美日韩综合精品二区| 一区二区三区视频免费观看| 国产剧情在线观看一区| 亚洲激情不卡| 久久三级毛片| 视频在线观看一区二区三区| 日产午夜精品一线二线三线| 亚洲三级av| 欧美日中文字幕| 欧美精品aa| 免费在线视频一区| 亚洲精品国产嫩草在线观看 | 亚洲人www| 日本免费一区二区三区四区| 日韩一区网站| 神马日本精品| 美女视频免费精品| 亚洲视频电影在线| 久久久久久免费视频| 欧美亚洲一级| 亚洲中字黄色| 日韩中文欧美| 老鸭窝一区二区久久精品| 亚洲香蕉视频| 在线一区免费| sm久久捆绑调教精品一区| 91精品国产经典在线观看| 99国产精品99久久久久久粉嫩| 另类小说一区二区三区| 石原莉奈在线亚洲三区| 久久精品动漫| 成人一二三区| 国产精品免费不| 中文字幕一区二区三区日韩精品 | 成人精品动漫一区二区三区| 欧美天堂一区二区| 国产亚洲在线观看| 99久精品视频在线观看视频| 国产精品大片| 欧美另类中文字幕| 亚洲1区在线观看| 丝袜诱惑制服诱惑色一区在线观看| 99精品综合| 蜜桃精品在线| 欧美三级网址| 91偷拍一区二区三区精品| 国产精品99久久免费观看| 日韩毛片网站| 综合国产精品| 免费视频最近日韩| 亚洲欧美日韩专区| 一区在线视频观看| 欧美性感美女一区二区| 国产伊人久久| 国内不卡的一区二区三区中文字幕| 国产乱码精品一区二区三区四区| 日本视频在线一区| 欧美亚洲二区| 国产精品主播| 久久不见久久见国语| 国产精品宾馆| 国产精品久久久久77777丨 | 国产精品18| 国产精品国码视频| 欧美精品1区| 精品国产乱码| 精品国产欧美| 高清在线一区| 日韩精品麻豆| 国产一区日韩欧美| 亚洲激情二区| 亚洲一区av| 日韩国产在线观看| 日韩精品免费视频人成| 日韩av午夜在线观看| 国产亚洲久久| 麻豆成人av在线| 国产精品99一区二区三| 欧美aa一级| 日韩视频精品在线观看| 免播放器亚洲| 亚洲+小说+欧美+激情+另类| 欧美久久精品| 国产精品网址| 国产一区二区三区四区| 九九色在线视频| 亚洲精华国产欧美| 亚洲区国产区| 国产精品一线| 国产精品国产三级国产在线观看| 国产福利片在线观看| 久久久久国产| 日韩中文字幕一区二区三区| 日韩精品免费一区二区夜夜嗨| 国产精品网站在线看| 不卡福利视频| 狠狠操综合网| 少妇精品久久久一区二区| 国产欧美日韩一区二区三区四区| 国产伊人久久| 五月天久久网站| 91在线成人| sm久久捆绑调教精品一区| 在线成人直播| 欧美视频久久| 日韩精品dvd| 久久国产精品亚洲77777| 日韩av网站免费在线| 国产成年精品| 在线亚洲国产精品网站| 日韩国产91| 成人影视亚洲图片在线| 91九色精品| 国产欧美一区二区三区米奇| 夜鲁夜鲁夜鲁视频在线播放| 蜜桃久久av一区| 精品国产中文字幕第一页| 91精品国产调教在线观看| 蜜桃视频第一区免费观看| 另类小说一区二区三区| 亚洲国产一区二区三区在线播放| 日本少妇一区二区| 久久精品官网| 欧美永久精品| 亚洲成人一区在线观看| 日本一区福利在线| 亚洲精品成人图区| 亚洲欧美日本国产| 亚洲一级少妇| 青青国产精品| 精品在线99| 久久91视频| 亚洲精品护士| 色婷婷久久久| 日本国产欧美| 亚洲福利一区| 麻豆国产欧美日韩综合精品二区| 午夜日韩av| 成人在线超碰|