網站首頁 編程語言 正文
1.如何找到代碼
作為客戶端的開發,工作中經常遇到,后端的同事來幫忙找接口詳情。產品經理來詢問之前的某些功能的業務邏輯,而這些代碼或者邏輯都是前人遺留下來的……沒有人知道在哪。那如何快速的找到你想找到的代碼位置呢?
(1)無敵搜索大法
雙擊shift鍵,頁面上有什么就在代碼中全局搜索什么,比如標題,按鈕名字~找到資源文件布局文件,再進一步搜索用到這些文件的代碼位置。
(2)log輸出大法
在不方便debug的時候,可以輸出一些log,通過查看log的輸出,可以明確的看出程序運行時的運行邏輯和變量值。
(3)profiler查看大法
我們要善于利用AndroidStudio提供的工具,比如profiler。在profiler中可以看到手機中正在運行的Activity的名字,甚至能看到網絡請求的詳情等等,功能很強大!
(4)萬能法找到頁面
在你的Application中注冊一個Activity的生命周期監聽,
ActivityLifeCycle lifecycleCallbacks = new Application.ActivityLifecycleCallbacks();
registerActivityLifecycleCallbacks(lifecycleCallbacks);
在進入到頁面的時候,直接輸出頁面路徑~
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
Log.e(TAG, "onActivityCreated :" + getActivityName(activity));
}
2.如何解決bug
這里討論的是那些第一時間沒有思路不知道如何解決的bug。這些bug有的是因為開發過程中粗心寫錯變量名,變量值,使用了錯誤的方法,少執行了方法,之前修改bug時某些地方被遺漏了,或者不小心把不應該改動的地方做了改動。也可能是因為使用的第三方庫存在缺陷,也可能是數據問題,接口返回的數據不正確,用戶做了意料之外的操作沒有被程序正確處理等等。
解決棘手的bug之前,首先要穩定自己的心態。記住,心態很重要。無論這個bug已經造成了線上多么大的影響,你的boss多么著急的催著你解決bug,要有一個平穩的心態才能解決問題,否者,慌慌忙忙緊緊張張的狀態下去解決bug,很可能會造成更多的bug!
(1)先看再想最后動手
解決bug的第一步,當然是穩定的復現bug。根據我的經驗,如果一個bug可以被穩定的復現,至少它就被解決了70%。
通過觀察bug的現象,就可以對bug做個大致的歸類或者定位了。是因為數據問題?還是第三方庫的問題?還或者是代碼的問題?
接著就是debug,看日志等常規操作了~
如果經過上面的操作,你還是一籌莫展,那么請往下看。
(2)改變現狀
如果你真的是一點思路也沒有,很可能某些可能造成bug的代碼也看不太懂。我建議你做一些改變現狀的操作,比如:注掉某些代碼,嘗試其他的輸入數據或者操作。總而言之,就是讓bug的現象出現改變! 那么你做的這些操作肯定是對這個bug是有影響的!!!然后再逐步恢復之前注掉的代碼,直到恢復某些注掉代碼之后,bug的現象恢復了。很有可能這里就是造成bug的位置。bug定位了之后,再去思考解決辦法。
(3)是技術問題還是業務問題
在實際的開發過程中,很多問題是通過技術手段解決不了的。可能是業務邏輯就出現了矛盾,也有可能是是因為一些奇奇怪怪的王八的屁 股。這類問題要早點發現,早點提出,才能早點解決。有些可能踩紅線的問題,作為開發,不要試圖通過技術去解決!!!否則可能要去踩縫紉機了~~~
(4)張張嘴遠勝于動動手
我一直堅信,世界上有更多能力比我強的人。我現在面對的bug也肯定不是只有我面對了。張張嘴問問周圍的同事,問問網站上的大神,現在網絡這么發達,只要別人解決過的問題,就不是問題。
很多時候的bug可能只是因為你對某些領域不熟悉,去請教那些對這個領域熟悉的人,你的問題對他們來說可能不是問題。
(5)bug解決不了,那就解決提出bug的人
有的時候的bug可能不是bug。提出bug的人可能只是對某些操作或者現象不理解,或者沒有達到他們的預期。他們就會提出來,他們覺得現在的程序是有問題的……這個時候可以去嘗試解決這個提出bug的人!讓他們覺得這不是一個bug。當然你沒有這種“解決人”的能力的話,就還是老老實實去解決bug吧~
(6)解決了bug之后
人的成長在于,遇到了問題,敢于直面問題,解決問題,并讓自己今后避免再出現類似的問題!
解決了bug,無論這個bug是自己造成的還是別人造成的。要善于總結,避免日后自己再寫出類似的問題。
3.如何實現不會的功能
(1)不要急著拒絕
遇到如何實現不會的功能,內心首先不要著急抗拒。
人總要成長,開發的技能如何成長?總不是像流水線工人那樣做些一些“熟練”操作吧?總要走出自己的舒適圈,嘗試解決一些問題,突破自己的上限吧~
你要知道,在Android開發這個領域,其實沒有什么逾越不了技術壁壘!只要別人家有的,你就可能有!別人家做出來的東西,你就能做出來。這種信心,至少要有的~
(2)大事化小小事化了
一個復雜的功能,通常可以分解成一些簡單功能,簡單的功能就可以攻克!
那么當你在面對要實現一個復雜功能或者沒有接觸過的功能開發的時候,你所要做的其實就是分解這個功能,然后處理分解后的小功能,最后再把這些小功能組合回去!
心態要穩,天塌了有個高的頂著
遇到問題,嘗試解決,實在不行,就要及時向上級反饋。作為你的上級,他們有責任也有能力幫你解決問題,或者至少給你提供解決問題的一種思路。心態要穩,天塌了有個高的頂著。
原文鏈接:https://juejin.cn/post/7182379138752675898
相關推薦
- 2023-01-30 python第三方異步日志庫loguru簡介_python
- 2022-06-23 python基礎之while循環、for循環詳解及舉例_python
- 2022-10-12 C#設計模式之建造者模式生成器模式示例詳解_C#教程
- 2022-12-06 深入了解C語言中的字符串和內存函數_C 語言
- 2023-08-28 axios的使用和接口請求統一封裝處理
- 2022-05-11 springboot多版本管理
- 2022-09-03 解決Python報錯問題[SSL:?SSLV3_ALERT_HANDSHAKE_FAILURE]_p
- 2023-02-17 golang基礎之waitgroup用法以及使用要點_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支